﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-xylyan-随笔分类-MFC</title><link>http://www.cppblog.com/xylyan/category/19488.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 11 Jun 2012 13:43:58 GMT</lastBuildDate><pubDate>Mon, 11 Jun 2012 13:43:58 GMT</pubDate><ttl>60</ttl><item><title>MFC程序，使用GDI绘图</title><link>http://www.cppblog.com/xylyan/archive/2012/05/06/173849.html</link><dc:creator>意吟</dc:creator><author>意吟</author><pubDate>Sun, 06 May 2012 15:19:00 GMT</pubDate><guid>http://www.cppblog.com/xylyan/archive/2012/05/06/173849.html</guid><wfw:comment>http://www.cppblog.com/xylyan/comments/173849.html</wfw:comment><comments>http://www.cppblog.com/xylyan/archive/2012/05/06/173849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xylyan/comments/commentRss/173849.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xylyan/services/trackbacks/173849.html</trackback:ping><description><![CDATA[<p>//矢量图和位图的区别</p>
<p><br />//介绍DC、了解DC<br /><wbr>//CBrush brush(#ff0000);<br /><wbr>//CClientDC dc(this-&gt;GetParent()-&gt;GetParent());<br /><wbr>//CWindowDC dc(this);<br /><wbr>//dc.FillRect(CRect(0,0,500,500),&amp;brush); <wbr></p>
<p>//基本图形的绘制<br /><wbr>//线段<br /><wbr><wbr>pDC-&gt;MoveTo(20,30);<br /><wbr><wbr>pDC-&gt;LineTo(300,30);<br /><wbr>//矩形<br /><wbr><wbr>pDC-&gt;Rectangle(20,50,300,200);<br /><wbr>//椭圆<br /><wbr><wbr>pDC-&gt;Ellipse(20,50,300,200);</p>
<p><wbr><br /><wbr>CPen pen, *pOldPen;<br /><wbr>CBrush brush, *pOldBrush;<br />//1.使用画笔<br /><wbr>pen.CreatePen(PS_SOLID,6,#ff0000); <wbr><wbr><br /><wbr>pOldPen=pDC-&gt;SelectObject(&amp;pen); <wbr><wbr><wbr><br /><wbr>pDC-&gt;MoveTo(20,250); <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br /><wbr>pDC-&gt;LineTo(300,250); <wbr><wbr><wbr><wbr><wbr><wbr><wbr><br /><wbr>pDC-&gt;SelectObject(pOldPen); <wbr><wbr><wbr><wbr><wbr></p>
<p>//2.使用画刷(填充)<br /><wbr>//创建一个蓝色的画刷<br /><wbr>brush.CreateSolidBrush(#0000ff); <wbr><wbr><wbr><wbr><wbr><br /><wbr>pOldBrush=pDC-&gt;SelectObject(&amp;brush); <wbr><br /><wbr>pDC-&gt;Rectangle(20,300,300,400); <wbr><wbr><wbr><wbr><wbr><br /><wbr>pDC-&gt;SelectObject(pOldBrush); <wbr><wbr><wbr></p>
<p><wbr>//创建一个蓝色的网格画刷<br /><wbr>brush.DeleteObject();<br /><wbr>brush.CreateHatchBrush(HS_CROSS,#0000ff); <wbr><wbr><wbr><wbr><wbr><br /><wbr>pOldBrush=pDC-&gt;SelectObject(&amp;brush); <wbr><br /><wbr>pDC-&gt;Rectangle(20,420,300,520); <wbr><wbr><wbr><wbr><br /><wbr>pDC-&gt;SelectObject(pOldBrush); <wbr><wbr><wbr></p>
<p><wbr>//创建一个位图画刷<br /><wbr>brush.DeleteObject();<br /><wbr>CBitmap bitmap_brush;<br /><wbr>bitmap_brush.LoadBitmap(IDB_BITMAP1); <wbr><br /><wbr>brush.CreatePatternBrush(&amp;bitmap_brush); <wbr><wbr><wbr><br /><wbr>pOldBrush=pDC-&gt;SelectObject(&amp;brush); <wbr><br /><wbr>pDC-&gt;Rectangle(20,540,300,640); <wbr><wbr><wbr><wbr><wbr><br /><wbr>pDC-&gt;SelectObject(pOldBrush); <wbr><wbr></p>
<p><wbr>//空画刷<br /><wbr>brush.DeleteObject();<br /><wbr>brush.CreateStockObject(NULL_BRUSH);<br /><wbr>pDC-&gt;Rectangle(20,660,300,760); <wbr><wbr><br /><wbr>pDC-&gt;SelectObject(pOldBrush); <wbr></p>
<p>//3.使用位图<br /><wbr>//定义位图<br /><wbr>CBitmap bitmap;</p>
<p><wbr>//保存位图信息; <wbr><br /><wbr>BITMAP bmp; <wbr><wbr></p>
<p><wbr>//建立兼容设备<br /><wbr>CDC dcCompatible; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br /><wbr>dcCompatible.CreateCompatibleDC(pDC); <wbr><wbr><wbr><br /><wbr><br /><wbr>//从资源中装入位图 <wbr><br /><wbr>bitmap.LoadBitmap(IDB_BITMAP1); <wbr></p>
<p><wbr>//将位图选入设备<br /><wbr>dcCompatible.SelectObject(&amp;bitmap); <wbr><wbr></p>
<p><wbr>//获取位图信息<br /><wbr>bitmap.GetBitmap(&amp;bmp); <wbr></p>
<p><wbr>//拷贝<br /><wbr>pDC-&gt;BitBlt(600,0,bmp.bmWidth,bmp.bmHeight,&amp;dcCompatible,0,0,SRCCOPY);</p>
<p><br /><wbr>//从文件中获取位图<br /><wbr>HBITMAP hBitmap;<br /><wbr>hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),<br /><wbr><wbr><wbr>"res\\ball.bmp", //实际位图文件的路径<br /><wbr><wbr><wbr>IMAGE_BITMAP,0, <wbr>0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);//从文件中装入位图<br /><wbr>bitmap.Detach();<br /><wbr>bitmap.Attach(hBitmap);<br /><wbr>bitmap.GetBitmap(&amp;bmp); <wbr><br /><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br /><wbr>dcCompatible.SelectObject(&amp;bitmap); <wbr><br /><wbr><wbr><wbr><br /><wbr>//绘制非透明位图（将dcCompatible上的内容拷贝到pDC中）<br /><wbr>pDC-&gt;BitBlt(600,40,bmp.bmWidth,bmp.bmHeight,&amp;dcCompatible,0,0,SRCCOPY);<br /><wbr>pDC-&gt;StretchBlt(600,100,bmp.bmWidth*2,bmp.bmHeight*2,&amp;dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);</p>
<p><wbr>//绘制透明位图（将dcCompatible上的内容拷贝到pDC中，同时去掉最后一个参数指定的颜色）<br /><wbr>pDC-&gt;TransparentBlt(600,200,bmp.bmWidth,bmp.bmHeight,&amp;dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,#ff0000);</p>
<p><br />//4.输出文字<br /><wbr>pDC-&gt;SetTextColor(#ff0000);<br /><wbr>pDC-&gt;SetBkMode(TRANSPARENT);</p>
<p><wbr>CFont <wbr>font;//当前字体<br /><wbr>font.CreateFont(32,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,ANTIALIASED_QUALITY,DEFAULT_PITCH | FF_SWISS,"宋体");<br /><wbr><br /><wbr>CFont *pOldFont=pDC-&gt;SelectObject(&amp;font);</p>
<p><wbr>pDC-&gt;TextOut(50,320,"输出文字");<br /><wbr>CSize cs;<br /><wbr>cs=pDC-&gt;GetTextExtent("输出文字");<br /><wbr>pDC-&gt;TextOut(50+cs.cx,320,"abcdefg");<br /><wbr>pDC-&gt;SelectObject(pOldFont);</p>
<p>//复杂图形<br /><wbr>int step=30;<br /><wbr>int center_x=700;<br /><wbr>int center_y=500;<br /><wbr>float x,y;<br /><wbr>x=center_x-300;<br /><wbr>y=sin(x/600*6*3.14)*100;<br /><wbr>pDC-&gt;MoveTo(x,center_y+y);<br /><wbr>while (x&lt;center_x+300)<br /><wbr>{<br /><wbr><wbr>y=sin(x/600*6*3.14)*100;<br /><wbr><wbr>pDC-&gt;LineTo(x,center_y+y);<br /><wbr><wbr>x+=step;<br /><wbr>}</p><img src ="http://www.cppblog.com/xylyan/aggbug/173849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xylyan/" target="_blank">意吟</a> 2012-05-06 23:19 <a href="http://www.cppblog.com/xylyan/archive/2012/05/06/173849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>