Settings | Sign in | Sign up

There are currently 6 posts.

【用法】ExtFloodFill顏色填充函数的用法

Floor 1 巨大八爪鱼 7/7/16 23:27
【FLOODFILLBORDER模式】
// 设置线条颜色为红色
SelectObject(hdc, GetStockObject(DC_PEN));
SetDCPenColor(hdc, RGB(255, 0, 0));
// 画三条线
MoveToEx(hdc, 50, 50, NULL);
LineTo(hdc, 400, 130);
MoveToEx(hdc, 380, 50, NULL);
LineTo(hdc, 240, 540);
MoveToEx(hdc, 260, 510, NULL);
LineTo(hdc, 60, 40);
// 设置填充颜色为青色
SelectObject(hdc, GetStockObject(DC_BRUSH));
SetDCBrushColor(hdc, RGB(0, 255, 255));
// 填充
ExtFloodFill(hdc, 200, 200, GetDCPenColor(hdc), FLOODFILLBORDER);

Floor 2 巨大八爪鱼 7/7/16 23:29
FLOODFILLBORDER模式是根据边框颜色填充。边框的颜色必须为参数4指定的颜色。如果边框不是封闭的,或者不是由一种颜色组成的,那么颜色就会填满整个客户区。
Floor 3 巨大八爪鱼 7/7/16 23:31
【FLOODFILLSURFACE模式】
// 设置线条颜色为红色
SelectObject(hdc, GetStockObject(DC_PEN));
SetDCPenColor(hdc, RGB(255, 0, 0));
// 画三条线
MoveToEx(hdc, 50, 50, NULL);
LineTo(hdc, 400, 130);
MoveToEx(hdc, 380, 50, NULL);
LineTo(hdc, 240, 540);
SetDCPenColor(hdc, RGB(0, 0, 255)); // 指定第三条线为蓝色
MoveToEx(hdc, 260, 510, NULL);
LineTo(hdc, 60, 40);
// 设置填充颜色为青色
SelectObject(hdc, GetStockObject(DC_BRUSH));
SetDCBrushColor(hdc, RGB(0, 255, 255));
// 填充
ExtFloodFill(hdc, 200, 200, GetPixel(hdc, 200, 200), FLOODFILLSURFACE);


Floor 4 巨大八爪鱼 7/7/16 23:32
FLOODFILLSURFACE模式与“画图”中的“喷枪”工具的效果完全相同。参数4为指定点的颜色,GetPixel函数可以获取指定点的当前颜色。
Floor 5 巨大八爪鱼 7/7/16 23:35

FloodFill函数只有4个参数,相当于调用ExtFloodFill函数并使用FLOODFILLBORDER模式(第一种模式)。

但是这个函数仅仅是为16位的Windows系统所保留的,所以不建议使用此函数。

Floor 6 巨大八爪鱼 7/7/16 23:36

【参考资料】
https://msdn.microsoft.com/en-us/library/dd162726(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/dd162709(v=vs.85).aspx

Content converter:

Reply the post
Content:
User: You are currently anonymous.
Captcha:
Unclear? Try another one.