第一范文网 - 专业文章范例文档资料分享平台

MFC中的GDI绘图(9)

来源:用户分享 时间:2021-06-02 本文由青衫忆笙 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Pie Polygon PolyPolygon Polyline Rectangle RoundRect BitBlt StretchBlt GetPixel SetPixel TextOut ExtTextOut TabbedTextOut DrawText

绘制饼形图 绘制多边形,包含由线段连接的一个或多个点(顶点) 创建使用当前多边形填充模式的两个或多个多边形,多边形可以相互分 开或叠加 绘制多边形,包含连接指定点的一组线段 使用当前笔绘制矩形,用当前画刷填充 使用当前笔绘制圆角矩形,用当前画刷填充 位图函数 从指定设备上下文拷贝位图 把位图由源矩形和设备移动到目标矩形,必要时拉伸或压缩位图以适合 目标矩形的维数 获取指定点像素的 RGB 颜色值 设置指定点像素为

最接近指定色的近似值 文本函数 用当前选取字体在指定位置写字符串 用当前选取字体在矩形区域写字符串 在指定位置写字符串,制表符扩展为制表符停止位置数组中指定值 在指定矩形内绘制格式化文本

-------------------详情参考 MSDN、MFC 类库详解-----------------

坐标映射实例 (1)建立单文档 MFC 项目 Draw:New—>Projects—>MFC AppWizard(EXE) —>Single Document。 (2) 找到 CMainFrame::PreCreateWindow 函数, 在其中设置默认窗口大小为 400 pixel*300 pixel。BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.cx=400; cs.cy=300; return TRUE; }

(3)添加 OnPaint 事件资源管理器—>ClassView—>右击 CDrawView 选择 Add Windows Message Handler —>WM_PAINT—> Add Handler 1. 2. 3. 4. 5. void CDrawView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here CRect cr;//矩形结构

6. GetClientRect(&cr);//获得客户区窗口

7. int cx=cr.right;//右

8. int cy=cr.bottom;//底

9. dc.SetMapMode(MM_ISOTROPIC);//X=Y

10. dc.SetWindowExt(1000,1000);//设置逻辑窗口,默认窗口原点为(0,0) 11. dc.SetViewportExt(cx,-cy);//定义输出视口,X右Y上为正

12. dc.SetViewportOrg(cx/2,cy/2);//定义视口原点为客户区中心

13. dc.Ellipse(-200,200,200,-200);//绘制椭圆与客户区外切的椭圆

14. //绘制水平垂直的四条半径

15. dc.MoveTo(0,0); dc.LineTo(200,0);

16. dc.MoveTo(0,0); dc.LineTo(-200,0);

17. dc.MoveTo(0,0); dc.LineTo(0,200);

18. dc.MoveTo(0,0); dc.LineTo(0,-200);

19. //执行F5进行Debug,在底端Output窗口中可以观察ClientRect

20. TRACE( "ClientRect.x = %d, ClientRect.y = %d/n", cx, cy );

21. }

运行结果如图1左。当改变窗口大小时,图中圆形状始终不变。

<1>将上面代码的第9行改为:dc.SetMapMode(MM_ANISOTROPIC);//X!=Y运行结果如图1右。

图1

我们发现,尽管上面代码的第13行dc.Ellipse(-200,200,200,-200);中定义的椭圆外接矩形逻辑上为正方形,但是显示的并不是圆,而是椭圆。

当我们改变窗口大小时,图中椭圆变形,甚至可能变为圆形。具体为:

保持窗口宽度不变时,减小高度,椭圆变得更扁;保持窗口高度不变时,减小宽度,椭圆变得更圆,当拉伸到客户区为正方形时,我们发现椭圆变成了圆!

<2>将上面代码的第9行改回dc.SetMapMode(MM_ISOTROPIC);//X=Y,第15行改为

dc.LineTo(500,0); 第18行改为dc.LineTo(0,-500); 运行结果如图2左。

保持窗口高度不变,减小窗口宽度,使窗口宽度<窗口高度,运行结果如图2右。

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新外语学习MFC中的GDI绘图(9)全文阅读和word下载服务。

MFC中的GDI绘图(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1206007.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top