画图

我们在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. ExtJs2.0学习系列--Ext.Panel
  2. insert into 时间_2021国家公务员考试报名时间_国考什么时候报名
  3. (一)boost库之日期、时间
  4. OpenCV的dnn模块调用TesorFlow训练的MoblieNet模型
  5. DOM介绍~超好理解的哦
  6. java中的scanner用法
  7. Kubernetes 弃用 Docker刷爆了网络,我们公司也慌了!
  8. 高德地图车机版缩放版_高德地图车机版2020
  9. (没用,只是学习贴,可能永不会更新)Js 写《智慧树》自动评论脚本
  10. matlab卡方拟合优度检验,卡方拟合优度检验在教学中的应用及Matlab实现_刘泽显...
  11. 企业信息化规划与设计
  12. Protobuf版本下载地址
  13. 紫书5-16UVa212
  14. C#生成与识别条形码、二维码示例 zxing、 barcodelib生成条形码 code128B等 无白边 自动宽度
  15. vbox 虚拟机导入 无法启动 fatal:int18:boot failure
  16. Win11更新或更改时间后闪白屏的解决方法
  17. Postman 都有女朋友了,我特么竟然还单身
  18. Windows搭建cloudever对接OneDrive教程(新版)
  19. ftrack Review 支持格式和分辨率
  20. 简单介绍API Platform Core

热门文章

  1. XP 服务器应用程序不可用
  2. C语言初步-顺序结构-已知三边求三角形面积-余弦定理
  3. vb2008如何连接mysql_VB6.0连接 SQLSERVER2008数据库
  4. 公交查询系统--支持来电通数据库
  5. ghost后找不到页面文件的解决办法
  6. 路由器:简述对Routing路由表字段的认识
  7. spring 从入门到总结
  8. vue基础实践1-胡子语法展现到页面
  9. android4.2.2 surfaceflinger,[imx6 ]Android4.4.3--surfaceflinger导致系统起不来,ldb显示问题...
  10. 5.新浪微博Swift项目第五天