进行这种转换的最佳方法是:我有4对坐标,我需要将图像的角落准确地放在它们身上? 就像在photoshop中一样,当你处于自由变换模式并且在按住ctrl的同时移动图像的角落。
类似的东西。
答案 0 :(得分:2)
您可以使用graphics.drawTriangles。 http://help.adobe.com/en_US/as3/dev/WS84753F1C-5ABE-40b1-A2E4-07D7349976C4.html
此代码应该满足您的需求(未经测试)
graphics.beginBitmapFill(bitmapData);
graphics.drawTriangles(
Vector.<Number>([10,10, 100,10, 10,100, 100,100]),
Vector.<int>([0,1,2, 1,3,2]),
Vector.<Number>([0,0, 1,0, 0,1, 1,1])
);
答案 1 :(得分:2)
如果您可以使用Flash 10 drawTriangles()
方法,那么this link将为您提供有关您尝试执行的操作的详细说明,以及一些记录良好的功能代码。该代码与romamik提供的解决方案非常相似,但是,您需要计算t
的正确uvtData
值才能使其正确呈现:
总结该链接:
(1/point_distance)*ratio
计算每个点的透视变形 - 投影到虚拟3d空间(也就是帖子的作者称之为“魔法”)这应该产生你正在寻找的效果。
如果您无法使用drawTriangles()
,那么this link会提供替代方案,但它不会产生与drawTriangles()
方法一样好的结果。
答案 2 :(得分:1)
您可以使用旧3D引擎Sandy移植的DistortImage class。更简洁的方法是使用rotateX
和rotateY
,但需要一些数学上的痛苦!