17.9.4 深入介绍GDI(3)

2013-10-07 01:06:18 · 作者: · 浏览: 79

3.关于打印的更多知识

GDI中内置了一个综合的打印模式,并且通过较高级别的Symbian操作系统组件来实现。然而,需要注意的是,一般只有大型的、通信器类型的手机才带有打印输出。较为简单的手机一般不需要打印输出,因此也就不支持该功能。 为了提供特殊打印机的系统支持,必须将打印机驱动程序编写为实现 CPrinterDevice 接口的插件,并且将其存储在/system/printers目录中。在客户端上,常用的方法是使用提供的 GUI对话框(如果存在的话,该对话框一般名为 CEikPrinterSetupDialog),允许用户设置并启动打印。打印设置选项包括如下:

页面设置,可设置页面尺寸、边距、富文本的页眉页脚,以及页面编号方式的选项、首页页眉和页脚;

打印设置,可设置需要打印的拷贝数量,以及需要使用的驱动程序;

打印预览,显示版式的预览。

在文档模型中,应该外部化打印设置。当然,也可以直接设置这些选项,在这里CPrintSetup是一个关键类。通过 CPrintPreviewImage 提供屏幕上的打印预览支持。并且,正如我们在前面所见,在任何可进行打印的应用程序核心中,都必须实现MPrintProcessObserver的PrintBandL()。

编写支持以上打印机功能的程序并不非常困难。然而,如果需要从应用程序中进行打印,则编写与特殊 UI 无关的代码的需要大大增加,并且对于应用程序的许多元素,这些代码正逐渐成为关键的考虑因素。 例如,应用程序工具栏可能与设备高度相关,菜单和对话框也可能与设备高度相关(虽然在后面的示例中,一些尺寸无关性将非常有用)。另一方面,供字处理器使用的文本视图应该与设备高度无关。

然而,有效打印文本的需求和快速交互编辑大量文档的需求存在明显的区别。因此,Symbian操作系统文本视图组件包含许多共享的代码,也有许多截然不同的代码,分别对应上述两种不同的需求。要求较少的应用程序将包含更多的共享代码。

在另一个不考虑打印的示例中,电子表格可看作是抽象的单元格,每个单元格包含文本、数字或公式。如果采用文本视图,则绘制代码可以使用像素单位,并且也可以方便地支持缩放。但是,如果需要打印电子表格,包括敏感的分页和嵌入的图表,那么绘制代码就会很复杂。如果编写一个支持以上功能的电子表格,需要从头开始针对打印进行设计,并且优化屏幕上的视图,以表示要打印的页面。

4.色彩管理

色彩的基本类是 TRgb:红-绿-蓝的色彩规范。TRgb 对象具有 32 位值,其中的 3 个 8 位分别用于红(R)、绿(G)和蓝(B),另外 8 位没有什么作用;在某些情况下,它们用于 alpha信息(透明度)。

在Symbian操作系统的该基本类中浪费内存吗?实际上,这种浪费非常少。首先,在任何处理器体系结构中都很难高效处理 24位的值。更为重要的是,TRgb没有较大的数值—也就是说,与屏幕或位图上的像素不同,只需要较小的位数就可以存储位图。  

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节