В c # я использую PictureBox на выигрышной форме.
Я пытаюсь воссоздать 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);
}
Будем благодарны за любые мысли.