C GDI 學習筆記 二 幾個例子

2021-04-13 12:17:07 字數 2681 閱讀 8490

1.第乙個例子——「hello world!」

第乙個最經典的例子當然是hello world了:)

graphics mygraphics(*pdc);

//建立乙個

graphics物件

//建立乙個筆刷

第一項是透明度(

0--255

)後三項是

rgb值

solidbrush brush(

color(100,0,0,255) );   

fontfamily fontfamily(l"latha");

//選擇一種字型

font font( &fontfamily, 1,

fontstyleregular,unitinch );

pointf pointf(5,5);

mygraphics.

drawstring( l"hello word!", -1, &font, pointf, &brush );

上面的例子就會顯示出一行大大的「hello world!」。

需要注意的是,

font

的建構函式,裡面的第二個引數是表示字型大小的。與過去不同,這裡的單位不再是畫素,而是一相對的長度單位

em。常用於

css裡對距離,長度,字型大小等的定義。

它是參照於預先設定的乙個值的。根據具體的使用環境不同,其標準值也不一樣。

而且,這個引數是支援實數的,也就是說不必是整數。

2.第二個例子

—— 載入一副

graphics imgraphics( *pdc );

//檔案路徑,需要注意的是

gdi+

的字串引數都是寬字元的

很簡單的就可以載入並顯示出來乙個jpg了。需要注意的是,gdi+的所有字串引數,都是要寬字元的。

可以發現

graphics

在gdi+

中,的作用,有些象

gdi種的

cdc,不過不同的是,

graphics

是裝置無關的,所以我們不必在費神的考慮裝置無關點陣圖和裝置相關點陣圖的差別了。

同時,gdi+

本身就支援非常多的格式,所以載入並顯示的過程被大大簡化了。需要注意的是,某些常用格式的本身還有很多差異,例如

bmp就又被細分為

16位,

24位,

32位,根據其儲存的演算法不同還分作壓縮和非壓縮的。根據掩碼不同,

16位又分成了多種格式。這些格式裡就有很多是

gdi+

不支援的。

3.第三個例子

—— 繪製直線

graphics pathraphics( *pdc );

//建立乙個向量圖形物件

graphicspath path;

pen newpen(

color( 255, 0, 0 ), 3 );

//為path

增加一條直線

, 可以增加多條。

path.

addline( 0,0,100,100 );

pathraphics.

drawpath( &newpen, &path );

gdi+

的pen

類還提供

setdashstyle

和setdashpattern

方法來設定畫筆的預定義風格和自

定義型別。其中,預定義風格可以有:

dashstylesolid(實線)

、dashstyledash(虛線)

、dashstyledot(點線)

、dashstyledashdot(

點劃線)

、dashstyledashdotdot(

雙點劃線)和

dashstylecustom(

自定義型別)。

graphics pathraphics( *pdc );

//建立乙個向量圖形物件

graphicspath path;

pen newpen(

color( 255, 0, 0 ), 3 );

newpen.

setdashstyle(dashstylecustom); //

自定義風格

real dashvals[4] = ; //

間隔為2

newpen.

setdashpattern(dashvals, 4);

//當連續增加時,效果是將所特有被增加的點連線起來。

path.

addline( 0,0,100,100 );

path

.addline( 200,100,200,50 );

pathraphics.

drawpath( &newpen, &path );

經過少許的變化,這次畫出了一條稍微複雜一點的線。利用乙個簡單的浮點陣列來定義點線的週期,就可以畫出不同的點劃線了。

通過newpen.setstartcap( linecaparrowanchor );

newpen.setendcap( linecapdiamondanchor );

還能夠設定線的端點的樣式,例如箭頭,圓等等

執行緒學習七 幾個例子

目錄 在子執行緒中通過join 方法指定順序 include include include c 裡處理多執行緒的標頭檔案是thread using namespace std class test test void init int m void printvalue private int m...

儲存過程幾個例子

create or replace procedure peace if is cursor var c is select from grade begin for temp in var c loop if temp.course name os then dbms output.put lin...

EnumSet的幾個例子

enumset 是乙個與列舉型別一起使用的專用 set 實現。列舉set中所有元素都必須來自單個列舉型別 即必須是同型別,且該型別是enum的子類 列舉型別在建立 set 時顯式或隱式地指定。列舉 set 在內部表示為位向量。此表示形式非常緊湊且高效。此類的空間和時間效能應該很好,足以用作傳統上基於...