
<Image Source="Tulips.jpg" Width="200" Height="150" HorizontalAlignment="Left">
<Image.Clip>
<EllipseGeometry RadiusX="100" RadiusY="75" Center="100,75"/>
</Image.Clip>
</Image>
项目上需要绘制坐标轨迹,找开源组件也是费尽周折,最后发现睁丛Canvas + Polyline就可以基本的轨迹功能。为使轨迹不过于单调增加了网格线或宏背景。
学习WPF: 第6个月。
网格线的绘制主要依赖窗口的宽高和设定的间隔计算,画多少行,画多少悉团樱列,画多长,画多高。
支持窗口缩放只要是监听 SizeChanged 的回调事件,窗口尺寸变化,实现重绘和更新。
封装成工具类, 源码 。
如果是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这两个事件来取消开关晌枝字段的真值,并结束绘制。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)