gpt4 book ai didi

flash - 如何准确绘制旋转位图?

转载 作者:行者123 更新时间:2023-12-01 05:46:07 29 4
gpt4 key购买 nike

我有一个带有 mask 位图的容器。这个容器的缩放和旋转在运行时会发生变化,我需要绘制掩码位图,但无法找出适当的矩阵计算来这样做。

我的代码可以正常工作以反射(reflect)位置、比例、偏移以进行居中而不旋转。旋转时,角度正确但定位不正确 - 我相信是因为旋转矩形时尺寸会发生变化。

有人可以帮我弄清楚如何在定位中对此进行补偿 - 这是一些代码:

 // Adjust the transformation matrix to account for the position of the container
var tMatrix:Matrix = _imgContainer.transform.matrix;

//Offset for container
tMatrix.translate(this.x,this.y);

//Offset for bounds centering
tMatrix.translate(-_imgContainer.width/2,-_imgContainer.height/2);

// Compensate for rotation
// ????

var result_bitmap:BitmapData = new BitmapData(_maskedImg.width,_maskedImg.height,true,0x00FFFFFF);
result_bitmap.lock();
result_bitmap.draw(_maskedImg,tMatrix,null,null,null,true);
result_bitmap.unlock();

预先感谢您提供的任何帮助 -



编辑:
对不起,如果我没有正确解释这一点,让我再试一次,用一张图片来支持。我在一个容器中有一个蒙版位图,我将其用作绘制新位图的源。在捕获之前,用户可以在运行时缩放/旋转此容器。为了实现这一点,我向 draw 方法传递了一个基于容器矩阵的变换矩阵,并调整了 tx 和 ty 值以考虑非零原点(由于居中)。到目前为止,它运行良好并符合我的预期。

但是 - 一旦该容器旋转,捕获的 POSITION 现在再次关闭 - 可能是由于尺寸发生变化,因此 tx/ty 偏移现在对于容器的新尺寸不正确。我只需要对此进行补偿,但不知道如何补偿。

有没有人有使用转换矩阵的经验可以提供帮助?再次感谢您的努力!

Hosted by imgur.com

Hosted by imgur.com

最佳答案

仅供可能遇到类似问题的任何人使用。我通过显式设置转换矩阵值并按此特定顺序缩放、旋转然后平移来解决我的问题。

这不是从容器中复制转换矩阵。所以代替

var tMatrix:Matrix = _imgContainer.transform.matrix;

我直接按以下顺序设置值:
tMatrix.scale (_imgContainer.scaleX, _imgContainer.scaleY);
tMatrix.rotate (_imgContainer.rotation * (Math.PI/180));
tMatrix.translate (_imgContainer.x, _imgContainer.y);

谢谢你的努力——

关于flash - 如何准确绘制旋转位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151389/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com