我如何在紧凑的框架中设置位图分辨率

How can i set bitmap resolution in compact framework

我有一个要使用 Casio IT 9000 手持终端打印的位图对象(我们使用 Compact Framework 的原因)

我可以打印位图,但由于某种原因它会在不同的设备上放大。我在一些测试程序中找到了一个 'Vertical Resolution' 设置来解决这个问题,但我找不到如何使用这个值。

互联网告诉我使用

Bitmap.SetResolution

函数但 SetResolution 在 Compact Framework 3.5 中不存在。

我发现的另一个解决方法是调整位图的大小,但我们的原始位图在内存中创建了一个 4 MB 的对象。我们处于内存使用的极限,所以我无法分配另一个 Bitmap 对象而不得到 'Out Of Memory Exception' 设备持续抛出。

所以我目前能想到的选择是, 1 以某种方式设置位图分辨率或 2 调整位图大小而不分配另一个。

有没有其他方法可以做到这一点,或者我如何使用垂直分辨率设置

问题是,如何打印位图。 Windows CE 5.x 或 Windows 移动 6.x 设备没有真正的打印机驱动程序。因此,您需要使用打印机的本机打印机语言直接打印到打印机端口,或者使用某种打印机驱动程序和库,如 PrinterCE。此处缺少有关如何打印的信息。

要使用流缩放位图,您可以使用 openNetCF 的库(ImageHelper class,请参阅 Problems using ImageHelper to resize images on OpenNetCF with HTC T3333 示例)。

由于没有真正的驱动程序,缩放大部分由应用程序完成,除了可以自行缩放的打印机语言(即 PostScript)。在移动世界和移动打印机中,打印的位图大小主要取决于打印机的分辨率。因此,如果位图为 250x250 像素并且 'printed' 到具有 100dpi 打印分辨率的打印机(使用本机打印机语言,例如 ESC/P),则位图将以 2x2 英寸打印。如果打印机的原始分辨率为 200dpi,则打印的位图将为 ~1x1 英寸。您或多或少地用位图一个一个地设置每个打印点。此类打印机不关心某些位图格式(如 TIFF 或 JPG)可用的位图分辨率值。例如,这些分辨率值表示位图的分辨率为 150dpi。如果以该分辨率打印,位图将以 'original' 大小出现。如果位图在 150dpi 下具有 300x300 像素,则其原始大小为 ~2x2 英寸。但是如果它是在一台笨拙的 300dpi 打印机上打印的(不支持缩放),它将以 1x1 英寸打印。