MFC OnDraw()函数 画图
画图
我们在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()函数 画图相关推荐
- MFC制作Windows画图程序(二)
继<MFC制作Windows画图程序(一)> 文章目录 7 颜色填充功能 8 选择画笔颜色 9 设置画笔粗细 10 将绘制出来的图形保存的实现 11 添加位图 7 颜色填充功能 油漆桶功能 ...
- C++ MFC 画函数曲线(包含坐标)
第一步:新建MFC. VC++6.0的话是文件--新建--工程--MFCAppWizard(exe)--填写工程名称--确定(其他的可以不动)--点单文档--直接点完成就行了. 第二步:找到OnDra ...
- MFC全局函数开局——AfxGetApp解剖
MFC全局函数开局--AfxGetApp解剖[转自晨风], MFC中有不少的全局函数,方便在不同对象中获取不同的内容或创建不同的对象.主要全局函数有: AfxWinInit() AfxBeginThr ...
- MFC Attach()函数和Detach()函数
一.Windows对象和MFC对象的区别? MFC对象实际上并没有把整个Windows对象都包装在其中. 对于窗口:MFC对象它只是有一个窗口句柄而已,这个窗口句柄如果指向一个实际存在的窗口对象(窗口 ...
- 安卓自定义view全解:初始化,onDraw函数,onMeasure函数,用户手势事件
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓自定义view全解. view类包含如下函数.可供重写. onFinishInflate() 回调方法,当应用从XML加载该组件并用它构建界面之后 ...
- 专业函数画图软件Origin
首先:Origin软件已经是科研院所等单位的必备工作软件之中的一个,之所以大家讨论得较少,有可能并非其上手难度低.而是这些使用人群的学习理解能力要相对高一点吧: 其次:Excel不垃圾,但在函数画图方 ...
- MFC UpdateData()函数BUG
MFC UpdateData()函数BUG 5个Edit控件分别关联5个double型变量,变量初始化为零,也都显示0: 1.手动修改最上面一个Edit的内容为888.888:其余保持不变: 2.点& ...
- Python直接使用plot()函数画图
目录 一.plot()函数的认识 二.plot()函数基本运用 三.plot()函数数据可视化画图以及图元基本参数设置 一.plot()函数的认识 在使用Python进行数据可视化编程中matplot ...
- [mfc] SetWindowPos函数
[mfc] SetWindowPos函数 设置窗口大小位置 函数功能------设置窗口大小位置 该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序. 子窗口,弹出式窗口,及顶层窗口根据它们 ...
最新文章
- lz0-007 读书笔记09
- write up杂项:想蹭网先解开密码
- 纸的大小图解_图解常见纸张开数尺寸印前小常识
- left join on多表关联_资深DBA整理MySQL基础知识三:迅速理解MySQL的关联和子查询...
- 综合知识计算机类编制,天津事业编综合知识是什么
- [html] 解释下你对GBK和UTF-8的理解?并说说页面上产生乱码的可能原因
- 撤销EXCLE工作表保护密码
- Django获取多个复选框的值,并插入对应表底下
- qwidget show 是否有信号_PyQt5信号与槽机制入门(一)
- UnityShader29:模板测试
- tag untag_交换机该怎么理解Hybird中Tag和Untag端口模式?
- 基于分形理论和空间技术的耕地景观变化和用地质量研究
- css设置内外边距,css内外边距属性
- Protobuf 在 Ubuntu18 下的安装和使用
- 解决ueditor上传图片报Nginx 502 bad gateway问题
- uniapp怎么调起摄像头拍视频_uniapp如何实现直播
- 谈谈我对协议栈设计和架构的理解
- route 命令的使用
- 电脑升级到WIN11系统无法打开QQ和TIM?我来教你如何解决
- Windows10连接Google手机,短信照片同步折腾记录
热门文章
- 解决delphi直接打开bpg工程组文件后提示PROJECTS macro in project group file missing or incorrect丢失错误
- 【USACO】 贪婪的礼物送礼者
- java fault_java-无法捕获AxisFault异常
- 毛哥的快乐生活(23) 我不装了!我摊牌了!我就是大神
- 西安交大软件保研总结(中游偏下水平)
- 16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺
- 购物兔下载量突破17万!
- .NET Core Apollo 配置中心
- 中间件源码review方法论
- 你若不努力,整个世界将与你无关