setfillstyle

這個函數用於設置當前設備填充樣式。

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");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章