Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3342236
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2009-08-04 14:52:33

Symbian OS中,在可显示窗体上画图,无论是RWindow还是RBackedUpWindow,都是通过图形设备(graphics device)和图形上下文(graphics context)来实现。图形上下文是整个画图的核心概念,在介绍它之前我们先介绍一下图形设备的概念。

 

图形设备(graphics device)

 

图形设备是对呈现图形的设备的抽象,比如屏幕、打印机等。图形设备提供了一组独立于设备的接口,应用程序使用这些接口,通过图形上下文(graphics context)来画图。图形设备其实是画图的中介,图形上下文在画图时画在这些图形设备上。

 

Symbian OS中,CGraphicsDevice类是所有图形设备的基类,它是一个抽象类。Symbian OS中具体的关于图形设备的类图如下所示:

 

 

 

 

CBitmapDevice定义了位图图形的一组接口。Window Server客户端提供了CWsScreenDevice类,实现对屏幕画图,同时实现了CFbsBitmapDevice用来画一些内存中的位图,如将一幅位图加载到内存中再图出来;另外还有CFbsScreenDevice,用来直接进行屏幕操作,而不用通过Window Server,但不常用。

 

将图形输出在打印机上和在屏幕上画图类似,只是比较复杂。因为要考虑打印页数、页眉页脚,并且还比较耗费内存。CPrinterDevice提供了打印操作的基本功能。CPrinterDevice封装了一个打印设备,其中包括当打印预览时打印页的坐标转换;选择打印设备并返回其型号。一个设备有一个页面规范,提供页面方向和大小,封装在TPageSpec类中。

图形上下文(graphics context

 

图形上下文是一个非常重要的概念,没有它你无法对图形设备画任何东西。图形上下文为图形设备提供了上下文,通俗点讲,就是提供了画图环境。它有一些设置,如画笔、画刷的颜色格式设置以及字体字形的设置,这些设置都是设备无关的。

 

图形上下文还定义了画图区域,通常情况下不能将图形画在定义的区域外;它同时还包括了很多主要的画图操作。大部分操作都在抽象类CGraphicsContext中定义。这些画图操作包括绘画和填充各种图形如点、直线、曲线、弧形、矩形、多边形、圆形及椭圆形、字体及位图等。

 

在画图时通常使用CFbsBitGcCWindowGcCAnimGc是动画相关的,一般我们不直接创建此对象,而由Window Server创建。

 

CFbsBitGc类实现了位图图形上下文,它不但可以绘画和填充各种图形,还可以绘制CFbsBitmap对象加载的图片;CWindowGc类是窗口图形上下文,大多画图操作与CFbsBitGc类相同。

 

 

 

 

通常情况,进行一个画图操作只需:

l         创建一个图形设备对象(CWsScreenDevicCFbsScreenDevice

l         创建一个图形上下文对象(CWindowGc CFbsBitGc)将其关联到已创建的图形设备对象CWindowGc(CWsScreenDevice* aDevice)CFbsBitGc::Active(CFbsDevice *aDevice)

l         按自己的需求进行图形上下文设置(画笔画刷的颜色格式、字形字体、画图区域等)。

l         调用GC的相关操作来画图。

阅读(1042) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~