GDI 基礎程式設計(2) 畫刷的使用

2021-06-05 01:54:40 字數 2694 閱讀 2066

**中的注釋還是很清楚的,在此不羅嗦了:

void cgdi畫刷dlg::gdibrushdrawimage(cdc* pdc)

; //填充閉合區域

g.fillclosedcurve(&solidbrush,pt,4,fillmodealternate,1.0);

//構造比和多邊形

pointf p[5]=;

//填充多邊形

solidbrush.setcolor(color(255,155,0,200));

g.fillpolygon(&solidbrush,p,5);

/*繪製正夜曲線

* 對應的數學公式為:

* r=a*sin(n*angle)

* x=r*cos(angle)

* y=r*sin(angle)

*其中a相當於葉子的長度,n是決定葉子數量的乙個常量,angle相當於葉子的旋轉角度*/

int cx,cy;

crect rc;

getclientrect(&rc);

//以當前視窗的正中心繪製正夜曲線

cx=rc.width()/2;

cy=rc.height()/2;

int leaflen=200;//設定葉子長度

int leafnum=20;

float pi=3.14;

int x,y,x2,y2,r;

graphicspath temppath(fillmodealternate);

for(float i=0.0f;icolumncount-1)

hatchbrush tempbrush(hatchstyle(i),black,white);

g.fillrectangle(&tempbrush,rol*40,column*40,35,35);//填充矩形區域

g.drawrectangle(&pen,rol*40,column*40,35,35);//繪製邊框

str.format(l"%d",i);

int strlen=str.getlength();

memcpy(widechar,str.getbuffer(),sizeof(widechar));

stringformat format;

rectf rect(rol*40,column*40,35,35);

format.setalignment(stringalignmentcenter);

format.setlinealignment(stringalignmentcenter);

g.drawstring(widechar,strlen,&ft,rect,&format,&redbrush);

rol++;

} /*設定畫刷原點*/

color black(255,0,0,0),white(255,255,255,255);

hatchbrush hatchbrush(hatchstyle(20),black,white);

//在垂直方向填充8個矩形,使用預設的畫刷原點

for(int i=0;i<8;i++)

g.fillrectangle(&hatchbrush,0,i*50,100,50);

//使用不同的畫刷原點

for(int i=0;i<8;i++)

/*使用紋理畫刷,紋理化刷實際是將在目標區域進行平鋪*/

pen pen(color(255,0,0,255),2);

solidbrush brush(color(255,0,0,0));

font font(l"宋體",20);

texturebrush texturebrush(&image);//構造紋理化刷使用預設方式

g.fillellipse(&texturebrush,rc1);

g.drawellipse(&pen,rc1);

g.drawstring(l"原始大小",6,&font,pointf(40,220),null,&brush);

//方法二,只使用給定的部分區域

texturebrush tbrush2(&image,rect(0,0,60,50));

g.fillellipse(&tbrush2,rc2);

g.drawellipse(&pen,rc2);

g.drawstring(l"只用部分區域",6,&font,pointf(240,220),null,&brush);

texturebrush tbrush3(&image);

tbrush3.settransform(&matrix(0.5f,0.0f,0.0f,0.5f,0.0f,0.0f));//對話刷進行50%的縮放

g.fillellipse(&tbrush3,rc3);

g.drawellipse(&pen,rc3);

g.drawstring(l"比例縮小圖",6,&font,pointf(440,220),null,&brush);

}

為了簡單,我把所有**放在了同乙個函式中,繪製的時候會覆蓋。可以注釋掉一部份來看效果

GDI 遊戲程式設計之2 GDI 基本使用

gdi 就是 window系統提供了一些函式,gdi 就是.net裡面對這些函式的封裝,這些函式主要是在system.drawing 裡面,他包含了 繪圖裝置,畫筆,畫刷,顏色等各種東西,反正就是那些視窗控制項什麼的都是用他畫出來的,比如 按鈕,選單 滾動條什麼的。gdi gdi 就是window系...

mfc使用不同型別的畫刷填充矩形

畫刷是在畫刷畫封閉曲線時用來填充的顏色,mfc的cbrush類封裝了windowsgdi畫刷,通過它,對cdc類所繪製的封閉圖形的填充,可以填充顏色和紋理。首先給出本次的demo 下面給出核心 在ondraw函式中實現繪圖操作 除此之外,mfc中還可以使用位圖畫刷來進行封閉圖形的填充,方法如上。cb...

基礎程式設計 一些刷題時的小點

比較零碎,整理一下小點 scanf問題 常用math函式 floor double x 和ceil double x include include intmain 6 556sqrt double x log double x round double x memset string.h標頭檔案 ...