В 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);
}
Любые мысли были бы очень признательны.