GDI程式設計注意點 1

2021-08-04 06:47:35 字數 2944 閱讀 7122

textout的屬於比較老的文字輸出函式,但是簡單的文字輸出和格式控制使用它非常方便,廢話不多說,基本用法如下:

[cpp]view plain

copy

print?

void drawarea1(cdchandle mydc, point ptlefttop, point ptrightbottom)    

void drawarea1(cdchandle mydc, point ptlefttop, point ptrightbottom)

效果如下:

可以看到,

1.使用setbkmode決定背景是否透明,這在一張背景圖上輸出文字時經常遇到

2.使用setbkcolor和settextcolor設定文字和文字背景顏色

如下:[cpp]view plain

copy

print?

void drawarea2(cdchandle mydc, point ptlefttop, point ptrightbottom)    

void drawarea2(cdchandle mydc, point ptlefttop, point ptrightbottom)

效果如下:

預設的是ta_left和ta_top

注意:1.ta_right意味著輸出文字是以當前的座標向左輸出

2.ta_bottom意味著當前字型的底部和當前輸出的座標點對齊,所以可以看到同樣是距離頂部70,ta_top和ta_bottom分別用當前字型的頂部和底部和當前輸出座標點對齊,導致兩次輸出不在同一行。

3.textout不支援轉義字元\n、\t的使用

drawtext是textout的公升級版,支援更多的格式控制,如下:

[cpp]view plain

copy

print?

void drawarea3(cdchandle mydc, point ptlefttop, point ptrightbottom)    

void drawarea3(cdchandle mydc, point ptlefttop, point ptrightbottom)

對應效果如下:

可以看到:

1.setbkmode、setbkcolor、settextcolor對於drawtextout仍然可用

2.可以使用格式控制符控制在指定區域居中顯示,也可以計算輸出文字的區域大小從而計算文字位置來達到自定義居中控制。這裡使用兩種方法計算文字區域大小,前一種呼叫dc.gettextextent實際上是呼叫sdk的gettextextentpoint32函式,後一種傳入dt_calcrect引數先計算文字區域大小,這裡推薦使用後一種。

3.drawtext預設是識別\n的,為了識別\t,傳入引數dt_expandtabs即可。

4.drawtext支援自動截斷,注意以下幾個引數的不同。

dt_end_ellipsis     -多行時只截斷最後一行

dt_path_ellipsis   -多行時只截斷路徑最後一行

dt_word_ellipsis -多行時截斷每一行

5.使用引數dt_wordbreak支援自動換行

使用路徑可以完成複雜的自定義繪製,類似ps中的路徑功能,如下:

[cpp]view plain

copy

print?

void drawarea4(cdchandle mydc, point ptlefttop, point ptrightbottom)  

mydc.restoredc(-1);  

}  

void drawarea4(cdchandle mydc, point ptlefttop, point ptrightbottom)

mydc.restoredc(-1);

}

效果如下:

使用路徑的步驟基本是固定的,在beginpath和endpath之間繪製gdi元素,然後selectclippath選擇即可作為當前剪下區域使用。

區域特別是剪下區域在介面繪製中用的非常多,如下:

[cpp]view plain

copy

print?

void drawarea5(cdchandle mydc, point ptlefttop, point ptrightbottom)  

mydc.restoredc(-1);  

}  

void drawarea5(cdchandle mydc, point ptlefttop, point ptrightbottom)

void drawarea6(cdchandle mydc, point ptlefttop, point ptrightbottom)

顯示如下:

一般建議使用setviewportorg,這邏輯上比較直觀。

GDI程式設計注意點 1

textout的屬於比較老的文字輸出函式,但是簡單的文字輸出和格式控制使用它非常方便,廢話不多說,基本用法如下 void drawarea1 cdchandle mydc,point ptlefttop,point ptrightbottom 效果如下 可以看到,1.使用setbkmode決定背景是...

GDI 基礎程式設計(1)

首先是在我的vs2008裡面配置gdi 庫,以及初始化gdi lib,參見 然後進行一些比較基礎的gdi 畫筆 影象處理 詳細請見注釋 imageatt.setcolormatrix colormatrix,colormatrixflagsdefault,coloradjusttypebitmap ...

GDI 程式設計

image和bitmap類概述 gdi 的image類封裝了對bmp gif jpeg png tiff wmf windows元檔案 和emf 增強wmf 影象檔案的調入 格式轉換以及簡單處理的功能。而bitmap是從image類繼承的乙個影象類,它封裝了windows點陣圖操作的常用功能。例如,...