?? 用visual c++_net進(jìn)行g(shù)di+編程 _2.htm
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0048)http://www.qqread.com/vcdotnet/d652242000_2.html -->
<HTML lang=zh xml:lang="zh" xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>用Visual C++.NET進(jìn)行GDI+編程 - QQread.com 電腦頻道</TITLE>
<META http-equiv=Content-Language content=zh-CN>
<META
content=[art_mtkw],電腦入門,上網(wǎng)指南,操作系統(tǒng),常用軟件,黑客與安全,網(wǎng)絡(luò)游戲,程序開發(fā),數(shù)據(jù)庫(kù)開發(fā),網(wǎng)頁(yè)制作,圖像處理,多媒體制作,網(wǎng)絡(luò)編程,加密技術(shù),網(wǎng)絡(luò)技術(shù)
name=keywords>
<META content="用Visual C++.NET進(jìn)行GDI+編程" name=description>
<META content=QQRead.com name=author>
<META content=all name=robots>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="用Visual C++_NET進(jìn)行GDI+編程 _2.files/qqread_html.css" type=text/css
rel=stylesheet><LINK href="用Visual C++_NET進(jìn)行GDI+編程 _2.files/qqread_html_com.css"
type=text/css rel=stylesheet>
<STYLE type=text/css>.STYLE2 {
FONT-SIZE: 14px
}
</STYLE>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY><!-- 公共頁(yè)頭 -->
<DIV style="TEXT-ALIGN: center">
<DIV id=topad>
<TABLE>
<TBODY>
<TR>
<TD width=10><SPAN
id=ad_qqread_top></SPAN><!--End//--></TD></TR></TBODY></TABLE></DIV>
<DIV id=CHBig>
<DIV id=CHBigCSDNLogo><A href="http://www.qqread.com/"><IMG alt=巧巧讀書網(wǎng)
src="用Visual C++_NET進(jìn)行GDI+編程 _2.files/qqread.gif" border=0></A></DIV>
<DIV id=CHBigHeaderWrapper>
<DIV id=CHBigNavBar2>
<UL>
<LI><A href="http://www.qqread.com/news/" target=_blank>新聞中心</A>|
<LI><A href="http://www.qqread.com/skill/" target=_blank>技巧集錦</A>|
<LI><A href="http://www.qqread.com/itlife/" target=_blank>IT人生雨露</A>|
<LI><A href="http://www.qqread.com/pcbase/" target=_blank>電腦入門</A>|
<LI><A href="http://www.qqread.com/netreference/" target=_blank>上網(wǎng)指南</A>|
<LI><A href="http://www.qqread.com/safe/" target=_blank>黑客與安全</A>|
<LI><A href="http://www.qqread.com/commentsoft/" target=_blank>常用軟件</A>|
<LI><A href="http://www.qqread.com/os/" target=_blank>操作系統(tǒng)</A>|
<LI><A href="http://www.qqread.com/netgame/" target=_blank>網(wǎng)絡(luò)游戲</A><BR>
<LI><A title=圖片欣賞 href="http://www.qqread.com/photo/index.html"
target=_blank>圖片欣賞</A>|
<LI><A href="http://www.qqread.com/program/" target=_blank>程序開發(fā)</A>|
<LI><A href="http://www.qqread.com/database/" target=_blank>數(shù)據(jù)庫(kù)開發(fā)</A>|
<LI><A href="http://www.qqread.com/webdesign/" target=_blank>網(wǎng)頁(yè)制作</A>|
<LI><A href="http://www.qqread.com/photohandle/" target=_blank>圖像處理</A>|
<LI><A href="http://www.qqread.com/mutimedia/" target=_blank>多媒體制作</A>|
<LI><A href="http://www.qqread.com/netprogram/" target=_blank>網(wǎng)絡(luò)編程</A>|
<LI><A href="http://www.qqread.com/encrypt/" target=_blank>加密技術(shù)</A>|
<LI><A href="http://www.qqread.com/network/" target=_blank>網(wǎng)絡(luò)技術(shù)</A>
</LI></UL></DIV>
<DIV id=CHBigNavBar1></DIV></DIV>
<DIV style="CLEAR: both"></DIV></DIV></DIV><!-- /公共頁(yè)頭 -->
<DIV id=OutBox>
<DIV id=listMainArea>
<DIV id=disclaimer><A href="http://www.qqread.com/">巧巧讀書首頁(yè)</A> > <A
title=程序開發(fā) href="http://www.qqread.com/program/index.html">程序開發(fā)</A> > <A
title=.Net技術(shù) href="http://www.qqread.com/dotnet/index.html">.Net技術(shù)</A> > <A
title=VC.NET href="http://www.qqread.com/vcdotnet/index.html">VC.NET</A> >
正文</DIV>
<DL class=ReadArticle>
<DT>用Visual C++.NET進(jìn)行GDI+編程
<DD class=ArticleInfo3>
<SCRIPT src="用Visual C++_NET進(jìn)行GDI+編程 _2.files/adtitle.js"
type=text/javascript></SCRIPT>
<HR SIZE=2>
<DD class=ArticleInfo3>
<DIV align=center><A href="http://www.qqread.com/">http://www.qqread.com/</A>
作者:ADDING 2006-01-24 來(lái)源:yesky 瀏覽:<SPAN id=count></SPAN> </DIV>
<DD class=ArticleInfo_3>
<DD class=ArticleInfo_3><A
href="http://www.qqread.com/vcdotnet/d652242000.html">上一頁(yè)</A> <A
href="http://www.qqread.com/vcdotnet/d652242000.html">1</A> <FONT
color=#ff0000>2</FONT> <A
href="http://www.qqread.com/vcdotnet/d652242000_3.html">3</A> <A
href="http://www.qqread.com/vcdotnet/d652242000_3.html">下一頁(yè)</A>
<DD
class=ArticleContent><B>GDI+編程模塊的變化</B><BR><BR> 為了簡(jiǎn)化GDI+的編程開發(fā)過(guò)程,Microsoft對(duì)GDI+的編程模塊作了一些調(diào)整,這主要體現(xiàn)在以下幾個(gè)方面:<BR><BR> 1、不再使用設(shè)備環(huán)境或句柄<BR><BR>
<TABLE style="MARGIN: 10px 8px 3px 7px" cellSpacing=0 cellPadding=0 align=left
border=0>
<TBODY>
<TR>
<TD><SPAN
id=ad_qqread_mid_big></SPAN></TD></TR></TBODY></TABLE> 我們知道,在使用GDI繪圖時(shí),必須要指定一個(gè)設(shè)備環(huán)境(DC)。<A
href="http://www.qqread.com/keywords/mfc.html"
target=_blank>MFC</A>為設(shè)備環(huán)境提供了許多由基類CDC派生的設(shè)備環(huán)境類,如CPaintDC、CClientDC和CWindowDC等,用來(lái)將某個(gè)窗口或設(shè)備與設(shè)備環(huán)境類的句柄指針關(guān)聯(lián)起來(lái),所有的繪圖操作都與該句柄有關(guān)。而GDI+不再使用這個(gè)設(shè)備環(huán)境或句柄,取而代之是使用Graphics對(duì)象。<BR><BR> 與設(shè)備環(huán)境相類似,Graphics對(duì)象也是將屏幕的某一個(gè)窗口與之相關(guān)聯(lián),并包含繪圖操作所需要的相關(guān)屬性。但是,只有這個(gè)Graphics對(duì)象與設(shè)備環(huán)境句柄還存在著聯(lián)系,其余的如Pen、Brush、Image和Font等對(duì)象均不再使用設(shè)備環(huán)境。<BR><BR> 2、繪圖方式的變化<BR><BR> 先來(lái)看看同樣繪制一條從點(diǎn)(20,
10)到點(diǎn)(200,
100)直線的GDI和GDI+代碼,假設(shè)這些代碼都是添加在OnDraw函數(shù)中。<BR><BR> GDI繪制該直線的代碼如下:<BR><BR>
<TABLE width="100%" bgColor=#ffffff>
<TBODY>
<TR>
<TD>void CMyView::OnDraw(CDC* pDC)<BR>{<BR> CMyDoc* pDoc =
GetDocument();<BR> ASSERT_VALID(pDoc);<BR> CPen newPen( PS_SOLID, 3,
RGB(255, 0, 0) );<BR> CPen* pOldPen = pDC->SelectObject( &newPen
);<BR> pDC->MoveTo( 20, 10 );<BR> pDC->LineTo( 200,
100);<BR> pDC->SelectObject( pOldPen
);<BR>}</TD></TR></TBODY></TABLE><BR> GDI+繪制該直線的代碼如下:<BR><BR>
<TABLE width="100%" bgColor=#ffffff>
<TBODY>
<TR>
<TD>void CMyView::OnDraw(CDC* pDC)<BR>{<BR> CMyDoc* pDoc =
GetDocument();<BR> ASSERT_VALID(pDoc);<BR> using namespace Gdiplus; //
使用名稱空間<BR> Graphics graphics( pDC->m_hDC );<BR> Pen newPen( Color(
255, 0, 0 ), 3 );<BR> graphics.DrawLine(&newPen, 20, 10, 200,
100);<BR>}</TD></TR></TBODY></TABLE><BR> 從上面代碼可以看出,GDI先創(chuàng)建一個(gè)CPen(畫筆)對(duì)象,然后通過(guò)SelectObject將該畫筆選入到設(shè)備環(huán)境(pDC)中。接下來(lái)調(diào)用相應(yīng)的畫線函數(shù),最后恢復(fù)設(shè)備環(huán)境中原來(lái)的GDI對(duì)象。而GDI+是先使用Graphics類創(chuàng)建一個(gè)與pDC設(shè)備環(huán)境相關(guān)聯(lián)的Graphics對(duì)象,然后使用Pen類進(jìn)行畫筆的創(chuàng)建,最后調(diào)用相應(yīng)的畫線方法。由于Pen和設(shè)備環(huán)境是相互獨(dú)立的,因而不需要像GDI那樣恢復(fù)設(shè)備環(huán)境中原來(lái)的設(shè)置,而且Pen和Graphics對(duì)象的創(chuàng)建不存在先后次序。<BR><BR> 2、Graphics繪圖方法直接將Pen、Brush等對(duì)象作為自己的參數(shù)<BR><BR> 從上面的代碼可以看出,Graphics繪圖方法直接將Pen對(duì)象作為自己的參數(shù),從而避免了在GDI使用SelectObject進(jìn)行繁瑣的切換,類似的還有Brush、Path、Image和Font等。<BR><BR> 3、不再使用"當(dāng)前位置"<BR><BR> 我們知道,GDI繪圖操作(如畫線)中總存在一個(gè)被稱為"當(dāng)前位置"的特殊位置。每次畫線都是以此當(dāng)前位置為起始點(diǎn),畫線操作結(jié)束之后,直線的結(jié)束點(diǎn)位置又成為了當(dāng)前位置。設(shè)置當(dāng)前位置的理由是為了提高畫線操作的效率,因?yàn)樵谝恍﹫?chǎng)合下,總是一條直線連著另一條直線,首尾相接。有了當(dāng)前位置的自動(dòng)更新,就可避免每次畫線時(shí)都要給出兩點(diǎn)的坐標(biāo)。盡管有其必要性,但是單獨(dú)繪制一條直線的場(chǎng)合總是比較多的,因此GDI+取消這個(gè)"當(dāng)前位置"以避免當(dāng)無(wú)法確定"當(dāng)前位置"時(shí)所造成的繪圖的差錯(cuò),取而代之的是直接在DrawLine中指定直線起止點(diǎn)的坐標(biāo)。<BR><BR> 4、形狀輪廓繪制和填充采用不同的方法<BR><BR> GDI總是讓形狀輪廓繪制和填充使用同一個(gè)繪圖函數(shù),例如Rectangle。我們知道,輪廓繪制需要一個(gè)畫筆,而填充一個(gè)區(qū)域需要一個(gè)畫刷。也就是說(shuō),不管我們是否需要填充所繪制的形狀,我們都需要指定一個(gè)畫刷,否則GDI采用默認(rèn)的畫刷進(jìn)行填充。這種方式確實(shí)給我們帶來(lái)了許多不便,現(xiàn)在GDI+將形狀輪廓繪制和填充操作分開而采用不同的方法,例如DrawRectangle和FillRectangle分別用來(lái)繪制和填充一個(gè)矩形。<BR><BR> 5、簡(jiǎn)化區(qū)域的創(chuàng)建<BR><BR> 我們知道,GDI提供了許多區(qū)域創(chuàng)建函數(shù),如CreateRectRgn、CreateEllpticRgn、CreateRoundRectRgn、CreatePolygonRgn和CreatePolyPolygonRgn等。誠(chéng)然,這些函數(shù)給我們帶來(lái)了許多方便。但在GDI+中,由于為了便于將區(qū)域引入矩陣變換操作,GDI+簡(jiǎn)化一般區(qū)域創(chuàng)建的方法,而將更復(fù)雜的區(qū)域創(chuàng)建交由Path接管。由于Path對(duì)象是與設(shè)備環(huán)境分離開來(lái)的,因而可以直接在Region構(gòu)造函數(shù)中加以指定。
<DD class=ArticleContent>關(guān)鍵字: <A
href="http://www.qqread.com/keywords/image-processing.html">圖像處理</A> <A
href="http://www.baidu.com/baidu?tn=jkday2000&word=設(shè)計(jì)">設(shè)計(jì)</A> <A
href="http://www.qqread.com/keywords/operating-system.html">操作系統(tǒng)</A> <A
href="http://www.qqread.com/keywords/word.html">word</A> <A
href="http://www.qqread.com/keywords/windows.html">windows</A> <A
href="http://www.qqread.com/keywords/visualcpp.html">visual
c++</A> <A
href="http://www.baidu.com/baidu?tn=jkday2000&word=PDA">pda</A> <A
href="http://www.qqread.com/keywords/os.html">os</A> <A
href="http://www.qqread.com/keywords/mfc.html">mfc</A> <A
href="http://www.qqread.com/keywords/ie.html">ie</A>
<DD class=ArticleInfo_3><A
href="http://www.qqread.com/vcdotnet/d652242000.html">上一頁(yè)</A> <A
href="http://www.qqread.com/vcdotnet/d652242000.html">1</A> <FONT
color=#ff0000>2</FONT> <A
href="http://www.qqread.com/vcdotnet/d652242000_3.html">3</A> <A
href="http://www.qqread.com/vcdotnet/d652242000_3.html">下一頁(yè)</A> </DD></DL>
<DIV id=ArticleContent4>
<SCRIPT src="用Visual C++_NET進(jìn)行GDI+編程 _2.files/adend.js"
type=text/javascript></SCRIPT>
</DIV>
<TABLE style="MARGIN-BOTTOM: 5px" cellSpacing=1 cellPadding=0 width=582
align=center bgColor=#235f99 border=0>
<TBODY>
<TR bgColor=#ffffff>
<TD bgColor=#ffffff>
<SCRIPT src="用Visual C++_NET進(jìn)行GDI+編程 _2.files/580.js"
type=text/javascript></SCRIPT>
<TR bgColor=#ffffff>
<TD bgColor=#ffffff><IFRAME marginWidth=0 marginHeight=0
src="用Visual C++_NET進(jìn)行GDI+編程 _2.files/CAUDJ1G8.htm" frameBorder=0
width=580 scrolling=no height=145></IFRAME>
<TR bgColor=#ffffff>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width=580 border=0>
<TBODY>
<TR>
<TD style="PADDING-LEFT: 20px" width=266 bgColor=#235f99><B><FONT
color=#ffffff>相關(guān)文章</FONT></B></TD>
<TD style="PADDING-LEFT: 2px" bgColor=#235f99><B><FONT
color=#ffffff></FONT><FONT color=#ffffff>熱點(diǎn)排行:</FONT></B></TD>
<TD style="PADDING-LEFT: 5px" width=189 bgColor=#235f99>
<SCRIPT language=JavaScript
src="用Visual C++_NET進(jìn)行GDI+編程 _2.files/move.js"
type=text/javascript></SCRIPT>
</TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 22px; PADDING-TOP: 6px"
vAlign=top width=274>·<A title="C++ Builder與Visual C++孰優(yōu)孰劣"
href="http://www.qqread.com/itlife/p011181002.html"
target=_blank>C++ Builder與Visual C++孰優(yōu)孰劣</A><BR>·<A
title="eMbedded Visual C++開發(fā)入門"
href="http://www.qqread.com/other-devtool/x782130800.html"
target=_blank>eMbedded Visual C++開發(fā)入門</A><BR>·<A
title="Visual C++常微分方程初值問題求解"
href="http://www.qqread.com/vc/i602137200.html" target=_blank>Visual
C++常微分方程初值問題求解</A><BR>·<A title="Visual C++常用數(shù)據(jù)類型轉(zhuǎn)換詳解"
href="http://www.qqread.com/cpp/i902235300.html"
target=_blank>Visual C++常用數(shù)據(jù)類型轉(zhuǎn)換詳解</A><BR>·<A
title="Visual C++程序設(shè)計(jì)中的文件操作"
href="http://www.qqread.com/vc/i120830020.html" target=_blank>Visual
C++程序設(shè)計(jì)中的文件操作</A><BR>·<A title="Visual C++初學(xué)者入門的一條捷徑"
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -