我的图像是5000像素乘5000像素。它会定期按比例放大,以适应窗口的不同部分。
我正在创建一个聚焦在图像上不同位置的函数(如地图),然后缩放到我指定的某个比例。
我将我的观点传递给了这个函数(例如新的Point(2000,2500))但是这总是打破,因为它与图像没有特别的关系。
如何在任何给定时间以图像的给定比例制作相对于图像的点?
其他信息:我正在使用此处的指南http://www.adobe.com/devnet/flex/samples/fig_panzoom.html进行平移和缩放功能。
解决:
我的一个陷阱是我正在使用一个可能的bitmapScaleFactor> 1会破坏缩放比例。这是我使用的最终功能。
protected function testFocus(p:Point):void
{
var content:ContentRectangle = boardViewer._contentRectangle;
var panToPoint:PanToPointCommand = new PanToPointCommand(boardViewer, content);
var scale:Number = boardViewer.bitmapScaleFactor;
var location = new Point((p.x*scale)+content.x, (p.y*scale)+content.y);
var center = new Point(boardViewer.width/2, boardViewer.height/2);
//Move the point to the center
panToPoint.fromPoint = location;
panToPoint.toPoint = center;
panToPoint.execute();
}
答案 0 :(得分:1)
我没有测试过这个,但是如何使用应用于图像的比例因子来改变点坐标。
e.g。
var scaler:Number = 0.5;
image.scaleX = image.scaleY = scaler;
new Point(2000*scaler,2500*scaler);
答案 1 :(得分:0)
您在寻找DisplayObject.mouseX/mouseY
吗?但是,这些不会考虑任何轮换。
要考虑轮换,您可以执行类似(未经测试的代码):
var mat:Matrix = image.transform.concatenatedMatrix;
mat.invert();
// now use mat to transform point from 'stage space' to 'image space'
var pImage:Point = mat.transform(new Point(stage.mouseX, stage.mouseY));