检索图形对象属性并选择新的图形对象

【勇芳软件工作室】汉化HomePreviousNext

应用程序可以通过调用GetCurrentObjectGetObject函数来检索笔,画笔,调色板,字体或位图的属性。GetCurrentObject函数返回一个将当前选定的对象识别到设备上下文中的句柄; GetObject函数返回一个描述对象的属性的结构。

以下示例显示应用程序如何检索当前画笔属性,并使用检索到的数据来确定是否需要选择新画笔。

HDC hdc; /* display DC handle */

HBRUSH hbrushNew, hbrushOld; /* brush handles */

HBRUSH hbrush; /* brush handle */

LOGBRUSH lb; /* logical-brush structure */

/*

*检索一个识别当前画笔的句柄。

*/

hbrush = GetCurrentObject(hdc, OBJ_BRUSH);

/*

*检索包含的LOGBRUSH结构

*当前刷属性。

*/

GetObject(hbrush, sizeof(LOGBRUSH), &lb);

/*

*如果当前的刷子不是固体黑色的刷子,

*用黑色黑色刷子代替。

*/

if ((lb.lbStyle != BS_SOLID)

|| (lb.lbColor != 0x000000)) {

hbrushNew = GetStockObject(BLACK_BRUSH);

hbrushOld = SelectObject(hdc, hbrushNew);

}

/ *用白色画笔执行绘画操作。*/

/*

*完成最后一次绘画操作

*用新的刷子,应用程序应该

*选择原来的刷回到

*设备上下文并删除新的画笔。

*在这个例子中,hbrushNew包含一个句柄

*到股票对象。没有必要(但它

*没有害处)调用库存中的DeleteObject

*对象。如果hbrush新包含一个画笔的句柄

*由一个函数创建,如CreateBrushIndirect,

*有必要调用DeleteObject。

*/

SelectObject(hdc, hbrushOld);

DeleteObject(hbrushNew);

请注意,首次调用SelectObject功能时,应用程序保存原始画笔句柄。保存此句柄,以便在使用新画笔完成最后一次绘画操作后,可以将原始画笔选择回设备上下文。将原始画笔选择回设备上下文后,新画笔将被删除,释放GDI堆中的内存。