我正在尝试以窗口形式绘制不同的形状,就像我们在油漆中绘制一样。我想要这样的场景,比如用户单击矩形按钮,然后在应该绘制的表单上绘制一个矩形,绘制手绘形状的情况也是如此。以下是我的代码:
{
bool shouldPaint = false;
int initialX;
int initialY;
bool rectButton = false;
bool freeButton = false;
public Form1()
{
InitializeComponent();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
shouldPaint = true;
initialX = e.X;
initialY = e.Y;
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
shouldPaint = false;
}
if ( (rectButton==true) && (shouldPaint))
{
//
this.Invalidate();
this.Refresh();
System.Drawing.Pen pen1 = new System.Drawing.Pen(System.Drawing.Color.Black);
Graphics painter = CreateGraphics();
int width = e.X - initialX, height = e.Y - initialY;
Rectangle rect = new Rectangle(initialX, initialY, width * Math.Sign(width), height * Math.Sign(height));
painter.DrawRectangle(pen1, rect);
}
else if ((freeButton == true) && (shouldPaint))
{
//this.Refresh();
// this.Invalidate();
Graphics painter = CreateGraphics();
painter.FillEllipse(new SolidBrush(Color.Black), e.X, e.Y, 4, 4);
我面临两个问题;第一个是我能够向前绘制我的矩形,但是当我尝试向后绘制它时它不起作用。其次,当我单击手绘按钮时,它会在表单上以手绘形状绘制,但是当我第一次单击矩形按钮然后单击手绘按钮时,它不会绘制任何手绘形状。我是初学者,所以请温柔并帮助我:)