3
我一直在用C#繪製應用程序;我想添加一個選項來切換用當前畫筆繪製橢圓。我一直難以理解如何使橢圓的大小和Y位置在按住鼠標的同時發生變化。有任何想法嗎? 這是我的代碼。用於繪製應用程序的可定製橢圓
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ZSPainter
{
public partial class Form1 : Form
{
string drawToolString;
Graphics g;
bool c = false;
bool drawEllipse = false;
Point sp = new Point(0, 0);
Point ep = new Point(0, 0);
Pen p = new Pen(Color.Black, 1);
Brush b = new SolidBrush(Color.Black);
public Form1()
{
InitializeComponent();
}
private void penToolStripMenuItem_Click(object sender, EventArgs e)
{
drawToolString = "pen";
toolString.Text = "Current Tool: Pen";
}
private void brushToolStripMenuItem_Click(object sender, EventArgs e)
{
drawToolString = "brush";
toolString.Text = "Current Tool: Brush";
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
sp = e.Location;
if(e.Button == MouseButtons.Left)
c = true;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (drawToolString == "pen" && c)
{
ep = e.Location;
g = this.CreateGraphics();
if(!drawEllipse)
g.DrawLine(p, sp, ep);
/*else
*
*------Here is where I want an ellipse to drawn if drawEllipse is true.------
*/
}
else if (drawToolString == "brush" && c)
{
ep = e.Location;
g = this.CreateGraphics();
if(!drawEllipse)
g.DrawLine(new Pen(b, 3), sp, ep);
/*else
*
*------Here is where I want an ellipse to drawn if drawEllipse is true.------
*/
}
sp = ep;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
c = false;
}
private void ellipse_Click(object sender, EventArgs e)
{
drawEllipse = !drawEllipse;
}
}
}