background image

      .HBURSH  画刷对象  可以把它认为是一种沾满油漆的刷子,那么它的作用也就很显
而易见了,就是把设备环境的某个特定区域刷成特定的颜色。
      .HPEN    画笔对象  是具有一定颜色跟风格的画笔,它主要是用来绘制图元(线,矩
形,椭圆等)
      .HFONT   字体对象  可以认为它是具有各种风格的字符集,用来向设备环境上绘制文
本。
      .HRGN    区域对象  是可以被修剪,填充的一个具有某种形状的区域,可以使矩形,
椭圆,多边形,或者你能想到的任何形状。
       在一个特定时刻里一个设备环境里各种 GDI 对象只能存在一个实例,也就是说,在一
个时刻里,一个设备环境里面只能有一个位图,一枝画笔,一个画刷,一种字体,一种特
定区域形状。可以把它的工作用以下场景来描述:一个用于绘制图形的设备(设备环境),
它首先需要一张纸(位图对象)来绘制图形,一枝笔(画笔对象)来画,一个刷子

(画刷对

)来填充背景,一种字体(字体对象)来写字,以及一种风格(区域对象)来画图.

      CreatePen()        用于创建画笔对象
      CreateSolidBrush() 用于创建画刷对象
      CreateBitmap()     用于创建位图对象
      CreateFont         用于创建字体对象
      DeleteObject()     销毁所创建的对象
      SelectObject()     用于将指定的对象选入设备环境
切记

 

 :  

     从技术角度上来看,Windows 为每个应用程序维护一个特定的内存区域,当这个应用程
序结束时

Windows 会自动释放该应用程序所占有的内存区域,我们似乎不用把创建的对象

删除掉

,但是当这个程序要运行很长时间,并且不断向系统申请内存的时候我们就该傻眼了,

因为我们的程序就会狂吃内存

,这是我们所不愿见看到的,所以,作为一个良好的编程习惯,一

定把自己所申请的内存给释放掉

.

     关于像素:
     我们的显示器是由一个个点组成的,其中的一个点就是一个像素.这是我们所能操作的最
小单元

,当然点越多越小时我们就感觉越清晰.在我工作的大部分时间里我的显示器的分辨

率都是

1028*768,这意味着我在我的显示器上有超过 750,000 个点。除了显示器的宽和高

你有一个颜色深度是你必须关心的,即一个像素的颜色是用几个比特来表示的,如果是一
个比特,很显然只能够表示两种颜色,也就是单色显示器。最常用的是

8,16,24 和 32

比特颜色深度。

8 位色又称为时索引色,它涉及到调色板的相关知识,这里我就不详细介绍

了,相关的介绍已经很多了。
      对于 16,24,32 位色,它们都是通过 RGB 三原色来表示一个像素的颜色的----红,
绿,蓝。

   

      每个像素的表示方式在 DirectX 里特别关心的,在 GDI 里,我们可以把一切都看成是
24 比特的,系统会为我们作相应的转换工作的。
      在 GDI 里,每种颜色都是由 COLORREF 来表示的。COLORREF 在本质上就是一个整
数。共

24 比特,每种颜色用 8 比特来表示。

      下面是 RGB 宏定义:
       #define RGB(r,g,b)
       ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)
(b))<<16)))
有关像素的操作

: