C#에서는 WinBox에서 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);
}
어떤 생각이라도 대단히 감사하겠습니다.