0

进行这种转换的最佳方法是什么:我有 4 对坐标,我需要将图像的角准确地放在它们上面?就像在 Photoshop 中一样,当您处于自由变换模式并按住 ctrl 移动图像的角落时。 在此处输入图像描述

类似的东西。

4

3 回答 3

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])
); 
于 2013-06-04T14:18:46.983 回答
2

如果您可以使用 Flash 10drawTriangles()方法,那么此链接将为您提供一个很好的解释,说明您正在尝试做什么,并提供一些有据可查的功能代码。该代码与 romamik 提供的解决方案非常相似,但是,您需要计算 的正确tuvtData才能使其正确呈现:

从该链接总结:

  • 计算您要绘制的矩形的中心点
  • 获取每个点到中心的距离
  • 计算对角线之间的比率
  • 使用公式(1/point_distance)*ratio计算每个点的透视失真——投影到一个人造 3d 空间(也就是帖子作者所说的“魔法”)

这应该会产生您正在寻找的效果。

如果您不能使用drawTriangles(),那么此链接提供了一种替代方法,但它不会产生与该方法一样好的结果drawTriangles()

于 2013-06-04T15:33:01.747 回答
1

您可以使用从旧 3D 引擎 Sandy 移植的DistortImage 类。一种更清洁的方法是利用,rotateXrotateY它需要一些数学上的痛苦!

于 2013-06-04T14:15:08.133 回答