這個函數用於設置當前設備填充樣式。
void setfillstyle(
FILLSTYLE* pstyle
);
void setfillstyle(
int style,
long hatch = NULL,
IMAGE* ppattern = NULL
);
void setfillstyle(
BYTE* ppattern8x8
);
參數
pstyle
指向填充樣式 FILLSTYLE 的指針。
style
指定填充樣式。可以是以下宏或值:
宏 | 值 | 含義 |
BS_SOLID | 0 | 固實填充。 |
BS_NULL | 1 | 不填充。 |
BS_HATCHED | 2 | 圖案填充。 |
BS_PATTERN | 3 | 自定義圖案填充。 |
BS_DIBPATTERN | 5 | 自定義圖像填充。 |
hatch
指定填充圖案,僅當 style 爲 BS_HATCHED 時有效。填充圖案的顏色由函數 setfillcolor 設置,背景區域使用背景色還是保持透明由函數 setbkmode 設置。hatch 參數可以是以下宏或值:
宏 | 值 | 含義 |
HS_HORIZONTAL | 0 | |
HS_VERTICAL | 1 | |
HS_FDIAGONAL | 2 | |
HS_BDIAGONAL | 3 | |
HS_CROSS | 4 | |
HS_DIAGCROSS | 5 |
ppattern
指定自定義填充圖案或圖像,僅當 style 爲 BS_PATTERN 或 BS_DIBPATTERN 時有效。
當 style 爲 BS_PATTERN 時,ppattern 指向的 IMAGE 對象表示自定義填充圖案,IMAGE 中的黑色(BLACK)對應背景區域,非黑色對應圖案區域。圖案區域的顏色由函數 settextcolor 設置。
當 style 爲 BS_DIBPATTERN 時,ppattern 指向的 IMAGE 對象表示自定義填充圖像,以該圖像爲填充單元實施填充。
ppattern8x8
指定自定義填充圖案,效果同 BS_PATTERN,該重載以 BYTE[8] 數組定義 8 x 8 區域的填充圖案。數組中,每個元素表示一行的樣式,BYTE 類型有 8 位,按位從高到低表示從左到右每個點的狀態,由此組成 8 x 8 的填充單元,將填充單元平鋪實現填充。對應的二進制位爲 0 表示背景區域,爲 1 表示圖案區域。
返回值
無
示例
以下代碼片段設置固實填充:
setfillstyle(BS_SOLID);
以下代碼片段設置填充圖案爲斜線填充:
setfillstyle(BS_HATCHED, HS_BDIAGONAL);
以下代碼片段設置自定義圖像填充(由 res\\bk.jpg 指定填充圖像):
IMAGE img;
loadimage(&img, _T("res\\bk.jpg"));
setfillstyle(BS_DIBPATTERN, NULL, &img);
以下完整代碼設置自定義的填充圖案(小矩形填充),並使用該圖案填充一個三角形:
#include <conio.h>
#include <graphics.h>
int main()
{
// 創建繪圖窗口
initgraph(640, 480);
// 定義填充單元
IMAGE img(10, 8);
// 繪製填充單元
SetWorkingImage(&img); // 設置繪圖目標爲 img 對象
setbkcolor(BLACK); // 黑色區域爲背景色
cleardevice();
setfillcolor(WHITE); // 白色區域爲自定義圖案
solidrectangle(1, 1, 8, 5);
SetWorkingImage(NULL); // 恢復繪圖目標爲默認繪圖窗口
// 設置填充樣式爲自定義填充圖案
setfillstyle(BS_PATTERN, NULL, &img);
// 設置自定義圖案的填充顏色
settextcolor(GREEN);
// 繪製無邊框填充三角形
POINT pts[] = { {50, 50}, {50, 200}, {300, 50} };
solidpolygon(pts, 3);
// 按任意鍵退出
_getch();
closegraph();
}
以下代碼片段設置自定義的填充圖案(圓形圖案填充):
setfillstyle((BYTE*)"\x3e\x41\x80\x80\x80\x80\x80\x41");
以下代碼片段設置自定義的填充圖案(細斜線夾粗斜線圖案填充):
setfillstyle((BYTE*)"\x5a\x2d\x96\x4b\xa5\xd2\x69\xb4");