效果:
抽取各动态绘制类的firstPoint字段,OnStylusDown,OnStylusMove Stroke大不同则不进行抽取
抽取得到一个类,命名为DynamicAgent继承于DynamicRenderer 椭圆,矩形两个动态绘制类的firstPoint字段OnStylusDown与OnStylusMove可直接省略,视频动态绘制类中的OnStylusMove可直接省略。
源码
问题讨论: 1.
动态绘制墨迹出错,此为曲线,而不是矩形视频,推测是因为动态方法重写出现错误OnDraw。 后发现代码无偏差,在Draw和InkCanvas中OnStrokeCollected进行断点调试,发现源程序当点击时会立刻定位到Draw,而组合程序先会定位到OnStrokeCollected中。得出InkCanvars出现错误。原因是没有把自定义的动态绘制对象分配给InkCanvas 2. 当画完视频后画椭圆,再次画视频时,动态墨迹是椭圆而不是矩形视频。 原因:是在MainWindow的button点击事件内没有初始化DefaultDrawingAttributes并从InkCavars获得初值。最后可得知,出现这种情况是DynamicRenderer作为默认初值使用的结果,当点击其他将会把DynamicRenderer重新赋值,导致不能再画出矩形视频。 3. 参考微软官方的操作手册。
https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.controls?view=netcore-3.1
