动态绘制多个形状 - WinForm

时间:2016-12-29 22:03:09

标签: c# winforms canvas

我想写一些Paint程序,我在画布上遇到动态绘图形状的问题。我有两种方法

1.当按钮鼠标按下并且鼠标移动时,我可以看到绘图形状,但是绘制下一个形状可以清除画布。

private void canvas_MouseMove(object sender, MouseEventArgs e)
        {
            if (!buttonPressed) return;
            int x = Math.Min(xStart, e.X);
            int y = Math.Min(yStart, e.Y);
            int width = Math.Max(xStart, e.X) - Math.Min(xStart, e.X);
            int heigth = Math.Max(yStart, e.Y) - Math.Min(yStart, e.Y);
            rect = new Rectangle(x, y, width, heigth);
            Refresh();
}

private void canvas_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawRectangle(Pens.Red, rect);
        }

2.第二种方法使我可以绘制多个形状(矩形),线条,文本等,但是当鼠标按钮启动时,形状是可见的,而不是在移动鼠标时是不可接受的......

private void canvas_MouseUp(object sender, MouseEventArgs e)
        {    
              Graphics g = canvas.CreateGraphics();
              g.DrawRectangle(Pens.Red, rect);                   
              g.Dispose();
        }

如何将这两种方法结合起来?我有Paint绘画效果?

0 个答案:

没有答案