0

情况
导出为投影仪的 Flex 项目,显示全屏。该项目有一个背景和几个点,每个点代表一个“位置”。这些位置是从 XML 文件中获取的,并以百分比设置它们的位置。以像素为单位的位置是通过应用程序的宽度和高度计算的(这应该可以)。点放置正确。

背景为JPG,分辨率为1280*1024。此时,背景设置在一个Canvaswith 上backgroundSize = auto。这会将图像放置在中心而不拉伸它。拉伸会产生丑陋的像素化图像,并将比例分开。

问题
当我们以 2 种不同的分辨率(1 = 1280*1024;2 = 1024*768)查看项目时,点位置良好,背景图像清晰。但是 - 由于背景具有与 1 相同的分辨率,背景没有完全显示在分辨率 2 中(因为它没有被拉伸。一个逻辑结果。

这就是为什么我尝试拉伸背景。结果:
以正确的方式放置点 http://i733.photobucket.com/albums/ww336/winkelman66/example1.jpg

在较小/其他分辨率上:
替代文字 http://i733.photobucket.com/albums/ww336/winkelman66/example2.jpg

解决方案?
我应该如何解决这个问题?我想总是让背景在底部居中,保持比例不变。这不是一个选项,因为缺少图像的细节/部分。拉伸会产生不成比例的丑陋、像素化图像。
我知道拉伸可能是在不丢失图像部分的情况下解决分辨率问题的唯一选择,但是如何解决点不在正确位置的问题(如图 2 所示)。

4

2 回答 2

1

不知道这是否正是你的意思,但我会试一试:P

  1. 获取原始背景大小
  2. 获取拉伸背景的大小
  3. 计算宽高差
  4. 反映点位置的差异
于 2010-02-17T10:42:39.640 回答
0

大问题,简单的解决方案(下班后)。我们只是在计算中忘记了一件简单的事情:反映位置中点的大小(宽度/高度)......

因此,如果您在从百分比计算像素位置时遇到同样的问题,请不要忘记将其包含(viewToBePositioned.width / 2)在您的计算中:-)

于 2010-02-17T16:00:37.463 回答