我最近问了一个关于如何垂直或水平翻转SVG对象的问题:
现在,以编程方式我希望能够移动,旋转和缩放对象,同时它仍然垂直或水平翻转。
我在Android应用中绘制所有常用对象,然后将其保存为SVG对象。我在Android上的所有计算工作都恰到好处。
当我导出到SVG时,我知道:每个对象属性(ScaleX,ScaleY,Rotation,CenterX,CenterY,MovedX,MovedY)和SVG文档的宽度,SVG文档的高度但我似乎无法获得它出口权利。我以为我解决了它,但随后出现了一些问题,我无法弄清楚是什么。而且我想我不可能是唯一一个想过这个问题的人,否则至少这个问题有用。
通过" touch"可以做什么的一个例子。在我的Android应用上输入:
当一个物体被缩放时,它会围绕它的中心缩放。旋转物体时,它会围绕物体的中心旋转。当它移动时,它会添加屏幕上当前触摸点与上一个触摸点之间的差异。
现在如果设置了某些标志" VerticalFlip"或者" HorizontalFlip",Android在绘制它的同时绘制翻转的变体。导出时,它会检查对象是否具有这些标志之一。
这是我如何计算的一个例子,但也许我完全错过了一些东西,或者我使事情变得复杂:
每个算法下面还有一个链接,表明该算法至少在该实例中有效。
现在当我保存它时,使用确切的系统。提供所有必要的值以正确导出它仍然无法正常工作。有些物体看起来恰到好处,其他物体完全变形。即使它们都被翻转,移动,旋转和缩放。导出的一些对象看起来与它们应该完全一样 - 而其他对象则不然。
左边是应用程序中绘图的屏幕截图,右边是Inkscape中导出的SVG。 SVG大小=正在绘制它的屏幕大小。导出时不会缩放整个屏幕。此处的所有对象都已缩放,旋转和移动。只有这里的红色物体显然有些不对劲。