问题解决步骤
关于WPF中平移缩放问题的解决
一直在研究WPF的绘图问题,其中需要用到图形的移动,以及图形的缩放。其实完成这两个问题不难,网上可以找到很多案例,但是总是有缺陷,我用到的在放大到一定倍数时,Canvas平移朝相反方向移动,试了很多次终于解决了这个问题。
图形缩放移动的实现
主要用了两个TransForm类,一个移动相关的TranslateTransform,一个缩放相关的ScaleTransform。TranslateTransform中主要设定平移参数X,Y向右向下移动,根据鼠标拖动事件的量计算移动的增加量,ScaleTransform中设定的属性参数是ScaleX,ScaleX以及CenterX,CenterY,分别对应的是X,Y的缩放比例和缩放中心。
实现图形移动的思路是将所有需要移动的几何图形绘制在Canvas上,Canvas上层套着一个容器,在这个容器上的鼠标事件下进行相应的移动滚轮缩放实现。
遇到的问题描述
1.当缩放比例为1的时候,拖动正常,图形跟着鼠标同步移动,
2.当缩放比例不为1的时候,鼠标跟图形不同步
3.缩放比例大于2时,图形朝着鼠标相反的方向移动
问题解决
最后解决的方式很简单,只是我没想到,花费了很长时间。因为一直是平移出现的问题,所以我就把重心一直放在TranslateTransform上,它的每一步的变化都在跟踪着,而且当缩放倍数大于2的时候把平移量变成相反数,仍然不行,TranslateTransform的每一步变