画图

我们在MFC里面需要画图的时候,往往是改写的CxxxView类里面的OnDraw()函数。在这里面会得到
CDC* pDC.
这是MSDN上面的CDC类的文档
我翻译几个我自己常用的函数。
1.MoveTo()和LineTo()函数。它们的参数是点的坐标,因此除了用两个int型数据之外,还可以直接用POINT结构体。MFC还有一个CPoint类,这个与Point结构体类似。

CPoint MoveTo(int x,int y);
CPoint MoveTo(POINT point);BOOL LineTo(int x,int y);
BOOL LineTo(POINT point);

2.重点介绍一下这个DrawText()函数。

//有这两种形式。
virtual int DrawText(LPCTSTR lpszString,int nCount,LPRECT lpRect,UINT nFormat);
int DrawText(const CString& str,LPRECT lpRect,UINT nFormat);

主要是这里的参数nFormat.它有很多的候选取值。

nFormat的候选参数

DT_BOTTOM
将文本对齐到矩形的底部。这个参数只与DT_SINGLELINE参数二者放在一起用。
DT_CALCRECT
确定矩形的宽度和高度。
如果有多行文本,则 DrawText()对应的矩形的宽度使用 lpRect 参数指向的矩形的宽度,并扩展矩形的底部以绑定最后一行文本。如果单行文本的长度比lpRect矩形宽,则扩展宽度。如果小于lpRect矩形的宽度,则减小宽度。
如果只有一行文本,则 DrawText 修改矩形的右侧,以便限制该行中的最后一个字符。
在这两种情况下,DrawText 返回格式化文本的高度,但不绘制文本。
DT_CENTER
将文本水平放置于矩形的中间。
DT_END_ELLIPSIS
对于显示的文本,如果字符串的末尾不适合矩形,则会截断该字符串并添加省略号。如果一个不在字符串末尾的单词超过了矩形的限制,它就会被截断而没有省略号。
除非指定了 DT_MODIFYSTRING 标志,否则不会修改字符串。
DT_PATH_ELLIPSIS
对于显示的文本,将字符串中间的字符替换为省略号,以便结果符合指定的矩形。如果字符串包含反斜杠()字符,则会在最后一个反斜杠之后尽可能保留文本。
除非指定了 DT_MODIFYSTRING 标志,否则不会修改字符串。
DT_LEFT
靠左边输出。
DT_MODIFYSTRING
修改指定的字符串以匹配显示的文本。这个值不会发挥作用,除非另外还指定了DT_END_ELLIPSIS或 DT_PATH_ELLIPSIS参数。
DT_RIGHT
靠右边输出。
DT_RTLREADING
当hdc中选择的字体是希伯来字体或阿拉伯字体时,为双向文本按从右到左的阅读顺序排列。所有文本的默认阅读顺序是从左到右。
DT_SINGLELINE
仅用一行展示文本。回车和换行不会导致移到下一行。
DT_TOP
将文本对齐到矩形的顶部。
DT_VCENTER
将文本竖直方向对齐,这个参数只与DT_SINGLELINE参数一起使用。
DT_WORDBREAK
分割文本。如果这一句话将要超出矩形的边界,这句话就会被自动的分割,从下一行开始继续显示。回车和换行也会分割一句话。如果没有使用这个参数的话,输出只会是一行。
DT_WORD_ELLIPSIS
截断任何不适合矩形的单词,并添加省略号。

MFC OnDraw()函数 画图相关推荐

  1. MFC制作Windows画图程序(二)

    继<MFC制作Windows画图程序(一)> 文章目录 7 颜色填充功能 8 选择画笔颜色 9 设置画笔粗细 10 将绘制出来的图形保存的实现 11 添加位图 7 颜色填充功能 油漆桶功能 ...

  2. C++ MFC 画函数曲线(包含坐标)

    第一步:新建MFC. VC++6.0的话是文件--新建--工程--MFCAppWizard(exe)--填写工程名称--确定(其他的可以不动)--点单文档--直接点完成就行了. 第二步:找到OnDra ...

  3. MFC全局函数开局——AfxGetApp解剖

    MFC全局函数开局--AfxGetApp解剖[转自晨风], MFC中有不少的全局函数,方便在不同对象中获取不同的内容或创建不同的对象.主要全局函数有: AfxWinInit() AfxBeginThr ...

  4. MFC Attach()函数和Detach()函数

    一.Windows对象和MFC对象的区别? MFC对象实际上并没有把整个Windows对象都包装在其中. 对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口 ...

  5. 安卓自定义view全解:初始化,onDraw函数,onMeasure函数,用户手势事件

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓自定义view全解. view类包含如下函数.可供重写. onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后 ...

  6. 专业函数画图软件Origin

    首先:Origin软件已经是科研院所等单位的必备工作软件之中的一个,之所以大家讨论得较少,有可能并非其上手难度低.而是这些使用人群的学习理解能力要相对高一点吧: 其次:Excel不垃圾,但在函数画图方 ...

  7. MFC UpdateData()函数BUG

    MFC UpdateData()函数BUG 5个Edit控件分别关联5个double型变量,变量初始化为零,也都显示0: 1.手动修改最上面一个Edit的内容为888.888:其余保持不变: 2.点& ...

  8. Python直接使用plot()函数画图

    目录 一.plot()函数的认识 二.plot()函数基本运用 三.plot()函数数据可视化画图以及图元基本参数设置 一.plot()函数的认识 在使用Python进行数据可视化编程中matplot ...

  9. [mfc] SetWindowPos函数

    [mfc] SetWindowPos函数 设置窗口大小位置 函数功能------设置窗口大小位置 该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序. 子窗口,弹出式窗口,及顶层窗口根据它们 ...

最新文章

  1. lz0-007 读书笔记09
  2. write up杂项:想蹭网先解开密码
  3. 纸的大小图解_图解常见纸张开数尺寸印前小常识
  4. left join on多表关联_资深DBA整理MySQL基础知识三:迅速理解MySQL的关联和子查询...
  5. 综合知识计算机类编制,天津事业编综合知识是什么
  6. [html] 解释下你对GBK和UTF-8的理解?并说说页面上产生乱码的可能原因
  7. 撤销EXCLE工作表保护密码
  8. Django获取多个复选框的值,并插入对应表底下
  9. qwidget show 是否有信号_PyQt5信号与槽机制入门(一)
  10. UnityShader29:模板测试
  11. tag untag_交换机该怎么理解Hybird中Tag和Untag端口模式?
  12. 基于分形理论和空间技术的耕地景观变化和用地质量研究
  13. css设置内外边距,css内外边距属性
  14. Protobuf 在 Ubuntu18 下的安装和使用
  15. 解决ueditor上传图片报Nginx 502 bad gateway问题
  16. uniapp怎么调起摄像头拍视频_uniapp如何实现直播
  17. 谈谈我对协议栈设计和架构的理解
  18. route 命令的使用
  19. 电脑升级到WIN11系统无法打开QQ和TIM?我来教你如何解决
  20. Windows10连接Google手机,短信照片同步折腾记录

热门文章

  1. 解决delphi直接打开bpg工程组文件后提示PROJECTS macro in project group file missing or incorrect丢失错误
  2. 【USACO】 贪婪的礼物送礼者
  3. java fault_java-无法捕获AxisFault异常
  4. 毛哥的快乐生活(23) 我不装了!我摊牌了!我就是大神
  5. 西安交大软件保研总结(中游偏下水平)
  6. 16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺
  7. 购物兔下载量突破17万!
  8. .NET Core Apollo 配置中心
  9. 中间件源码review方法论
  10. 你若不努力,整个世界将与你无关