初学者,C# 画点画线有关问题
菜鸟求助,C# 画点画线问题
请教各位大神,我想在同一个picturebox上点击画点或画线按钮分别实现画点和画线。
目前我采用的是pictureBox_MouseClick中实现画点, pictureBox_MouseDown和pictureBox_MouseUp中实现画线。
单独实现画点或画线能实现了。但是放在一起出现了Click和MouseDown、MouseUp 的冲突,不知道该如何解决啊?
------解决方案--------------------
写了个简单的例子给你,你参考看看
请教各位大神,我想在同一个picturebox上点击画点或画线按钮分别实现画点和画线。
目前我采用的是pictureBox_MouseClick中实现画点, pictureBox_MouseDown和pictureBox_MouseUp中实现画线。
单独实现画点或画线能实现了。但是放在一起出现了Click和MouseDown、MouseUp 的冲突,不知道该如何解决啊?
------解决方案--------------------
写了个简单的例子给你,你参考看看
public abstract class DrawObject
{
public int Width { get; set; }
public Color Color { get; set; }
public float X { get; set; }
public float Y { get; set; }
public DrawObject()
{
Width = 1;
Color = Color.Black;
}
public abstract void Render(Graphics g);
}
public class DrawDot : DrawObject
{
public override void Render(Graphics g)
{
g.FillRectangle(new SolidBrush(Color), X, Y, Width, Width);
}
}
public class DrawLine : DrawObject
{
public Point StartPoint { get; set; }
public Point EndPoint { get; set; }
public override void Render(Graphics g)
{
g.DrawLine(new Pen(Color, Width), StartPoint, EndPoint);
}
}
public abstract class DrawTool
{
protected DrawCanvas canvas;
public DrawTool(DrawCanvas canvas)
{
this.canvas = canvas;
}
public abstract void MouseMove(MouseEventArgs e);
public abstract void MouseDown(MouseEventArgs e);
public abstract void MouseUp(MouseEventArgs e);
}
public class DrawDotTool : DrawTool
{
public DrawDotTool(DrawCanvas canvas)
: base(canvas)
{
}
public override void MouseDown(MouseEventArgs e)
{
DrawDot drawDot = new DrawDot();
drawDot.X = e.X;
drawDot.Y = e.Y;
drawDot.Width = canvas.DrawStyle.Width;
drawDot.Color = canvas.DrawStyle.Color;
canvas.AddDrawObject(drawDot);
}
public override void MouseMove(MouseEventArgs e)
{
}
public override void MouseUp(MouseEventArgs e)
{
}
}
public class DrawLineTool : DrawTool
{
private Point startPoint;
private Point endPoint;
private DrawLine drawline;
private bool isDrawing = false;
public DrawLineTool(DrawCanvas canvas)
: base(canvas)
{
}
public override void MouseDown(MouseEventArgs e)
{
startPoint = new Point(e.X, e.Y);
isDrawing = true;
drawline = new DrawLine();
drawline.Width = canvas.DrawStyle.Width;