在c#中,我在赢取窗体上使用PictureBox。被覆盖的C#图形
我正在尝试重新创建MSPaint以了解图形对象。除了在PictureBox顶部打开另一个窗口,或者整个窗体被调整大小时,其中的其他窗口下绘制的东西都会被删除,这一切都可以正常工作。
这是我正在使用的代码的缩小版本。
private Graphics _g;
private bool _bIsMouseDown = false;
private void picCanvas_MouseDown(object sender, MouseEventArgs e)
{
if (!_bIsGraphicsSet) _g = picCanvas.CreateGraphics();
_bIsMouseDown = true;
DrawRectangle(e);
}
private void picCanvas_MouseMove(object sender, MouseEventArgs e)
{
if (_bIsMouseDown) DrawRectangle(e);
}
private void picCanvas_MouseUp(object sender, MouseEventArgs e)
{
_bIsMouseDown = false;
}
private void DrawRectangle(MouseEventArgs e)
{
System.Drawing.Rectangle r = CreateRectangle(e);
Pen pen = ChooseDrawColor();
_g.DrawRectangle(pen, r);
}
private Rectangle CreateRectangle(MouseEventArgs e)
{
int h = 10;
int w = 10;
// there is code in here for multiple sized rectangles,
//I know the math can be simplified for this example.
return new Rectangle(e.X - (w/2), e.Y - (h/2), w, h);
}
任何想法将不胜感激。