问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

wpf实现用鼠标画图

发布网友 发布时间:2022-05-18 21:00

我来回答

2个回答

懂视网 时间:2022-04-27 12:50

本文实例为大家分享了WPF实现画线动画的具体代码,供大家参考,具体内容如下

需求:一条直线(不是曲线),模范笔画一样在画布上逐渐画出来。但前提是,用后台代码实现,并非WPF标签

效果:


上代码:

/// <summary> 
 /// Window2.xaml 的交互逻辑 
 /// </summary> 
 public partial class Window2 : Window 
 { 
 public Window2() 
 { 
 InitializeComponent(); 
 var canvas = new Canvas(); 
 Content = canvas; 
 var points = 
 new List<Point>() 
 { 
  new Point(10, 10), 
  new Point(90, 90), 
  new Point(60, 10), 
  new Point(250, 90), 
  new Point(10, 10) 
 }; 
 var sb = new Storyboard(); 
 for (int i = 0; i < points.Count - 1; i++) 
 { 
 var lineGeometry = new LineGeometry(points[i], points[i]); 
 var path = 
  new Path() 
  { 
  Stroke = Brushes.Black, 
  StrokeThickness = 2, 
  Data = lineGeometry 
  }; 
 canvas.Children.Add(path); 
 var animation = 
  new PointAnimation(points[i], points[i + 1], new Duration(TimeSpan.FromMilliseconds(1000))) 
  { 
  BeginTime = TimeSpan.FromMilliseconds(i * 1010) 
  }; 
 sb.Children.Add(animation); 
 RegisterName("geometry" + i, lineGeometry); 
 Storyboard.SetTargetName(animation, "geometry" + i); 
 Storyboard.SetTargetProperty(animation, new PropertyPath(LineGeometry.EndPointProperty)); 
 } 
 MouseDown += (s, e) => sb.Begin(this); 
 } 
 } 

热心网友 时间:2022-04-27 09:58

如果是Canvas的话,可以这样试试:
使用Canvas_PreviewMouseLeftButtonDown事件,通过事件参数e记录下鼠标点击的坐标(例如在窗口类中添加一个私有字段:lineStartPoint);同时将准备的某个开关变量(例如可以取名为:isDrawingLine)值置为true。
然后在Canvas_PreviewMouseLeftButtonUp事件中,检查此开关变量,一旦发现此变量为真,就再取鼠标指针坐标(可以叫做:lineEndPoint);比较两个坐标,如果不是距离近到分不清,就画线。画线可以直接new一个Line对象并加入到Canvas.Children中,然后设置其X1/Y1/X2/Y2;画线后立即取消开关字段的真值。
这个办法应该可以画出一条线,但是不是正好是你需要的我就没把握了。
在此过程中,如果要看到动态效果,还可以考虑Canvas_MouseMove事件代替Canvas_PreviewMouseLeftButtonUp来取坐标(但要注意只添加一次Line);
而Canvas_PreviewMouseLeftButtonUp则用以取消开关变量的真值,以结束画图。
如果重视细节,可以再加上Canvas_MouseLeave这两个事件来取消开关字段的真值,并结束绘制。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 金丝玉玛瓷砖在全国的排名榜排名第几位 城市照明用的路灯基座接线是怎么接的? 三门湾接线端子JH1系列使用条件? 用C#的WinForm或者WPF程序实现一种绘图板,类似微软画图程序,不需要那么复杂,仅帮助实现可以自由画图。 耀世起航是什么意思 国家标准《GB&#47;T11944-2008》这个标准你能不能发给我一下,谢了!QQ1010776268 http://v.youku.com/v_playlist/ci00f1211944o9p2.html 《中空玻璃》gb/t11944-2002是最新的吗 脸上颧骨处突然出现一小块灰色块 手机上股票怎么买入 张图片的灰色块定义一个分数,然后我用的相对定位,可是数字在不同的分辨率下不跟着图片走,为啥 用mdhh扫描硬盘,出现浅灰色块怎么办 革字加个蔑读什么 无意中把电脑里的一篇文档复制到桌面上,结果桌面上图标下的文字出现一个灰色块,怎样才能恢复原貌呢 我本没有乙肝只是抗体差 三个月前注射298元的乙肝疫苗后 今天去复查 抗--HBS阳性+ 是不是没有效果 豆腐酸了吃了会中毒吗 颈3-4,4-5,5-6.6-7椎间盘突出,颈椎生理曲度变直,各椎体骨质呈不同程度增生及硬化 WPS简历模板里面的右边放图片的灰色块怎么去掉? 头疼好3天了。淋雨后开始出现症状。体温将近37°。1-2天就头疼脑袋冒汗,第三天喉咙痛痰。 要塞2游戏,建造的时候有灰色块 电动车电瓶接线座哪边是正极? WPF 绘图效率的问题 如何速度快而且又避免卡顿 电动三轮车电气故障一开钥匙门锁所有灯全亮什么毛病? WPF 怎么画心 如何解决wpf中绘图的卡顿 接地导通电阻测试仪,测输出电流时,如果没有标准大电流表,还能怎么测_百度问一问 WPF画图点击按钮在固定的坐标画图 用C#写一个画图程序 在c#中wpf应用程序项目中建立一个opengl绘画窗口。知道的请帮我一下。也可加993505118细谈。非常感谢。 wpf 作图问题? 请问在WPF中,怎么在一幅实时图片(每秒30帧)上用鼠标画图,还有你说那种实现鼠标画图的方法有代码吗 如何在WPF界面上用鼠标画图 窝柑怎么种植 什么是防寒布?? 茂谷柑还有1个月就开春就发芽了,抹掉开春还会开花结果吗? 《cod18》多久出? 在草地上用类似于锤子的东西打球的运动是啥 有没有类似于锤子手机那种可以模拟黑胶盘的音乐播放器? 有没有?类似于锤子一步的软件 GTX“泰坦”降临,A卡阵营颤抖了没有