请教 C# 中画直线的问题

openzpc 2014-02-24 10:40:38
实现各类似于操作系统画图程序中的绘制直线的功能,就是按住鼠标左键开始绘制,然后移动鼠标,最后松开鼠标绘制结束。
我知道在MouseDown事件中,记录起始点的位置startPoint,MouseMove时,记录终止点的位置endPoint,然后使用DrawLine方法就可以绘制一条直线了。
现在出现的问题是,每次绘制时,上次绘制的直线就消失了。怎样在上次画的直线的基础上,继续画呢?
如果有代码的话,就更好了。
谢谢各位大神们了!!

...全文
303 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
乌月龙井 2014-02-25
  • 打赏
  • 举报
回复

namespace DrawLineTest
{
   public partial class Form1:Form
   {
      InitializeComponent();
   }
   public Point beginpoint=new Point();
   public Pen p = new Pen(Color.Green);
   private void Form1_MouseDown(object sender,MouseEventArgs e)
   {
     beginpoint.X=e.X;
     beginpoint.Y=e.Y;
   }
   private void Form1_MouseUp(object sender,MouseEventArgs e)
   {
     Point endpoint = new Point();
     endpoint.X=e.X;
     endpoint.Y=e.Y;
     Graphics g = this.CreateGraphics();
     g.DrawLine(p,beginpoint,endpoint);
    }
}
xlsmile110 2014-02-25
  • 打赏
  • 举报
回复
将画好的的作为背景图片,这样就不会丢失了!
Ki1381 2014-02-25
  • 打赏
  • 举报
回复
List是个好办法。 性能和功能要求都不高的话,有一个简单的傻办法:每次都直接DrawLine到Bitmap,然后用编辑控件重新载入最新的Bitmap。
小恒丶 2014-02-25
  • 打赏
  • 举报
回复
把你每次画的线 用list记录下来
BenBenBears 2014-02-25
  • 打赏
  • 举报
回复
画之前把上一次的结果保存在画布中,再在画布上面继续这一次的操作,最后把画布展示出来。
threenewbee 2014-02-24
  • 打赏
  • 举报
回复
用一个List<Tuple<Point, Point>>记录每次的画线,在Paint事件中全部都画一次。
jdczp 2014-02-24
  • 打赏
  • 举报
回复
不刷新不就好了
tcmakebest 2014-02-24
  • 打赏
  • 举报
回复
画的每一条线是需要记录下来的,如果会消失就重画一次

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧