2012-05-10 68 views
0

我的数学必须非常生锈。我已经想出一种算法,将采取公知的:元素x,y,宽度,高度翻译到不同的维度

  • X
  • ý
  • 宽度
  • 高度
文档中的元素的

,并将其转化到相同的在不同的硬件设备上的区域。例如,该文档正在创建用于打印(让我们假设8.5“x11”字母大小),然后将此文档中的元素传输到专有的电子阅读器。

此外,关于电子阅读器的已知事实,屏幕是825x1200像素的肖像。每英寸有150个像素。

我给出了打印文档中的源元素点数(每英寸72个Postscript点数)。

到目前为止,我有一个算法,得到的接近,但它需要是确切的,我有一种感觉,我需要将长宽比合并到图片中。我现在正在做的是:

x (in pixels) = (x(in points)/width(of document in points)) * width(of ereader in pixels) 

任何线索?

谢谢!

+0

一般来说,你不能完全正确,因为你不能使用像素的分数。您可以做的最好的做法是将每个维度中的最近像素四舍五入。目前您的计算有多远? – mbeckish

回答

0

假设您的坐标是整数,公式x/width正在截断(整数除法)。你需要的是在浮点数中执行除法/乘法运算,然后截断。像

(int)(((double)x)/width1*width2) 

的东西应该做的伎俩(用C类转换为doubleint

1

您可能要恢复您的操作以减少整数截断的效果,如下所示:

x (in pixels) = x(in points) * width(of ereader in pixels)/width(of document in points) 

我不认为你有宽高比问题,除非你忘记提及你的电子阅读器设备有非方形像素。在这种情况下,您将在设备的屏幕上水平和垂直每英寸具有不同数量的像素,因此您将使用xpi的水平ppi和y的垂直ppi。

相关问题