我正在为Bada开发一个阅读器应用程序并且有一个愚蠢的问题。
是否存在将pt
大小转换为pixel
大小的平滑方法?
我找到了类似的东西,但我仍然希望你能应用一些公式并对此感到满意。
点是“现实世界”的长度单位(它们通常定义为 1/72 英寸),但像素没有明确的现实世界大小,因为这取决于设备的分辨率。
例如,我屏幕上的像素大约是 0.3 毫米宽,而我的手机大约是 0.15 毫米,而我的激光打印机的“像素”是 0.02 毫米宽。因此,要从像素变为现实世界单位,您需要特定设备的分辨率,即像素/现实世界单位比率,通常以 DPI 表示(每英寸点数,其中“点”旨在“像素”适用于使用像素的设备)。
在处理打印/扫描设备时,“真实世界大小”很重要,因此它几乎总是由操作系统以某种方式提供并且是正确的;另一方面,屏幕的情况则完全不同。
在大多数情况下,您并不真正关心屏幕上显示的东西的“真实世界大小”,因为没有人真正测量屏幕上的任何东西。此外,出于各种原因(首先是简单),屏幕布局通常部分以像素为单位。
另一方面,文本和其他元素的大小通常以点、缇和其他“现实世界单位”指定,通常好的窗口布局应该以“现实世界单位”进行,以便轻松适应高像素屏幕密度,其中基于像素的布局将不可读。
出于这个原因,操作系统通常会为屏幕提供一个 DPI 值,但通常它保留相同的默认值(通常为 72 DPI)而不管实际连接的屏幕(也是为了避免破坏设计不良的界面),但使其可配置给用户,让他调整到一个舒适的值。
至于 Bada,我在这里读到,操作系统既不提供真实的 DPI 值,也不提供“假”的 DPI 值,因此没有真正的方法可以将点转换为像素。另一方面,您可以简单地使用通常的“默认”72 DPI 值进行转化。请注意,选择 72 DPI 并非偶然:因为每英寸有 72 个像素,每英寸有 72 个点,您只需假设一个点等于一个像素。不正确,但在你的情况下“足够好”。
假设 bada 的 DPI 为 72 并不是一个好的选择,因为现代移动设备的 DPI 约为 200-300。
不幸的是,Bada 想走 iPhone 的路,拥有一些设备,你会在每台设备上发布你的应用程序,这些设备具有固定的功能。这样,您就可以访问三星网站,查看其屏幕的实际大小。然后自己计算每个设备的真实 DPI 并将其存储到表中。运行时,您可以获取设备名称并尝试搜索您的表。
AFAIK 您必须分别为每个设备将您的应用程序上传到 bada 商店。他们从 Bada SDK 假设您将为每个目标不同的应用程序进行编译。目标是由屏幕分辨率指定的,我猜你可以期望真正的屏幕是这个尺寸。
好吧,我认为这种设计很愚蠢,但可能确实是他们希望您为他们的平台开发的方式。