画笔

1. 当调用画线函数时,Windows 使用设备描述表中当前选中的“画笔”来画线。

2. 画笔决定线的色彩、宽度和线型,线型可以是实线、点划线或者虚线,默认设备描述表中画笔为  BLACK_PEN。不管映射方式什么,这种画笔都画出一个象素宽的黑色实线来。

3. Windows 提供的三种现有画笔:BLACK_PEN,WHITE_PEN 和 NULL_PEN.NULL_PEN 什么都不画。可以自己定制画笔。

4. Windows 程序使用句柄来引用画笔。画笔句柄的类型为 HPEN类型。

5. 调用 GetStockObject 函数可以获得现有画笔的句柄;调用 SelectObject 函数将画笔选进设备描述表,SelectObject 的返回值是此调用前设备描述表中的画笔句柄,即,SelectObject 将返回设备描述表中上一次选择的画笔句柄。
// 假设想使用名为 WHITE_PEN 的现有画笔,可以如下获取画笔的句柄

HPEN hPen;

hPen 
= GetStockObject(WHITE_PEN);

// 将画笔选进设备描述表
SelectObject(hdc,hPen);
当前的画笔是白色,在这个调用后,你画的线将使用 WHITE_PEN,直到i你将另外一个画笔选进设备描述表或者释放设备描述表句柄为止。

6. 创建自己的画笔,通常是:
使用函数 CreatePen 或 CreatePenIndirect 创建一个“逻辑画笔”(这仅仅是对画笔的描述),这些函数返回逻辑画笔的句柄;然后,调用 SelectObject 将画笔选进设备描述表,现在可以使用新的画笔来画线了。
在任何时候,都只能有一种画笔选进设备描述表。在释放设备描述表(或者选择了另一种画笔到设备描述表中)之后,就可以调用 DeleteObject 来删除所创建的逻辑画笔了。在删除后,该画笔的句柄就不再有效了。

7. 逻辑画笔是一种“GDI(图形设备接口)”对象;程序员可以创建六种的 GDI 对象:画笔、刷子、位图、区域、字体和调色板。
    除了调色板之外,这些对象都是通过 SelectObject 选进设备描述表的。

8. 使用 GDI 对象应该遵守的三条规则:
    最后要删除自己创建的所有 GDI 对象;
    当 GDI 对象正在一个有效的设备描述表中时,不要删除它;
    不要删除现有对象。

9. 如果有一个画笔的句柄,就可以通过调用 GetObject 获取 LOGPEN 结构各个成员的值:
GetObject(hPen,sizeof(LOGPEN),(LPVOID)&logpen);

10. 如果需要当前选进设备描述表的画笔句柄,可以调用:
hPen = GetCurrentObject(hdc,OBJ_PEN);

11. 使用点式画笔和虚线画笔时,点和虚线之间的空隙问题。
空隙的着色取决于设备描述表的两个属性——背景模式和背景颜色。
默认的背景模式为 OPAQUE,在这种方式下,Windows 使用背景色来填充空隙,默认的背景色为白色。
可以通过调用 SetBkColor(hdc,crColor); 来改变 Windows 用来填充空隙的背景色。
通过调用 GetBkColor 来获取设备描述表中定义的当前背景色。
通过将背景模式转换为 TRANSPARENT,可以阻止 Windows 填充空隙:SetBkMode(hdc,TRANSPARENT); 此后,Windows 将忽略背景色,并且不填充空隙,可以通过 GetBkMode 来获取当前背景模式(TRANSPARENT 或者 O
PAQUE)。 

posted on 2012-01-04 16:22 梦五 阅读(348) 评论(0)  编辑 收藏 引用 所属分类: Windows相关


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜