MFC控件GDI编程
MFC控件GDI编程
一丶学习内容
1.了解常用的GDI函数绘图.
2.使用常用的画笔画刷.
二丶常用的GDI函数绘图

上方则为我们常用的GDI函数了. 画线 矩形. 以及圆 等等.
2.1 画线代码MoveTo LineTo用法
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this); POINT po;
po.x = ;
po.y = ;
dc.MoveTo(, ); //移动起点到10 10 位置
dc.LineTo(po); //画线
dc.LineTo(po);
}
截图:

2.2使用PolyLine画多个线
PolyLine这个函数.则是给一个数组. 这个数组里面保存着x y坐标. 然后它会遍历数组.以你给定的点来画线.
起始的两个坐标属于在哪里开始画.就是指定的起点.
比如使用它画一个矩形.
代码:
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this); POINT po[] = { ,,,,,,,,, }; //给定坐标
dc.Polyline(po, );//给数组.以及数组大小. }
截图:

PolyLineTo 这个跟上面一样.上面的数组起始的两个成员是指明了起始位置.所以需要五个坐标.这一个直接使用MoveTo指定.数组里面直接填写坐标即可.
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this); POINT po[] = {,,,,,,, }; //给定坐标
POINT ps;
ps.x = ;
ps.y = ;
dc.MoveTo(ps);
dc.PolylineTo(po, );//给数组.以及数组大小. }
效果

2.3使用DC画圆
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this);
dc.Ellipse(CRect(, , , )); //给定坐标即可. }
截图:

2.4使用Dc画矩形
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this);
dc.Rectangle(CRect(, , , )); }

使用系统默认画刷.填充矩形.
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this);
CBrush brush;
CRect rect(, , , );
brush.CreateStockObject(LTGRAY_BRUSH);
dc.Rectangle(&rect);
dc.FillRect(&rect, &brush); //填充矩形.使用默认
}

2.5使用3D立体画一个矩形
其实3D立体就是使用两个RGB颜色来互相对应 一个代表的是上方的颜色.一个是下方的颜色
具体看代码吧.这里以矩形为例子.
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this);
CBrush brush;
CRect rect(, , , );
brush.CreateStockObject(LTGRAY_BRUSH);
dc.Rectangle(&rect);
dc.FillRect(&rect, &brush); //填充矩形.使用默认
dc.Draw3dRect(&rect, RGB(, , ), RGB(, , ));
}

可以看到.上方颜色是红色.下方跟下方右边是灰色.
2.6 判断坐标是否在矩形里面.
这个可以使用我们的类 CRect 里面有一个函数叫做.PtInRect(POINT)
POINT po;
po.x = ;
po.y = ;
if (CRect(, , , ).PtInRect(po))
{
AfxMessageBox(TEXT("Yes"));
}
else
{
AfxMessageBox(TEXT("No")); }

三丶画刷以及画笔使用
在GDI中.我们有画笔.以及画刷. 比如上面我们使用了画刷来填充矩形.那么画矩形的线也是可以更改的.
CPen类. 根 CBrush类. 当然也有自己 CFront. 简单讲解一个.
我们要使用画笔.就要使用 SelectObject来使用才可以使用.
比如下方代码: PS: Brush一样.只不过设置背景都有专门的函数.可以查询MSDN
void CCDCDlg::OnBnClickedButton1()
{
CClientDC dc(this);
CBrush brush;
CPen pen(PS_SOLID, , RGB(, , ));//创建画笔.
CPen *oldPen = dc.SelectObject(&pen); //选择画笔.
CRect rect(, , , ); dc.Rectangle(&rect); dc.SelectObject(oldPen);//还原画笔.
}
截图:

关于字体. 背景颜色. 查询MSDN即可.
MFC控件GDI编程的更多相关文章
- Windows MFC控件消息编程
1. Progress Bar Control Messages PBM_DELTAPOS PBM_GETPOS PBM_GETRANGE PBM_SETBARCOLOR ...
- MFC控件第一讲.DC编程
MFC控件第一讲.DC编程 一丶简介 什么是DC,DC有什么用. DC成为设备描述符表. DC的作用就是可以进行绘制. 比如我们的窗口都是绘制出来的. DC可以简单理解为.没一个窗口程序都有一块内存 ...
- MFC控件编程进度条编写
MFC控件编程进度条编写 一丶进度条编程需要用到的方法 进度条MFC已经帮我们封装好类了. 叫做 CProgressCtrl 进度条编程也很简单. 封装的方法也就那个那几个. GetPos() 获 ...
- MFC 控件编程之水平滚动条跟垂直滚动条
MFC 控件编程之水平滚动条跟垂直滚动条 一点水平滚动条的操作 首先在操作滚动条的时候.我们要知道滚动条的一些属性. 比如我们要设置 最大值 最小值. 以及每次递增的值是多少.都要设置. 所有就有一个 ...
- MFC控件编程之组合框跟列表框
MFC控件编程之组合框跟列表框 一丶简介 如果要使用组合框跟列表框.那么就要知道.组合框列表框是最核心的东西就是索引. 索引是从0开始的. 二丶组合框列表框常用的方法 AddString(字符串) 添 ...
- MFC控件编程之复选框单选框分组框
MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...
- MFC控件编程之 按钮编辑框.静态文本的使用,以及访问控件的七种方法.
MFC控件编程之 按钮编辑框.静态文本的使用以及访问控件的七种方法. 一丶按钮.静态文本的通用属性. 他们都有一个属性.就是可以输入标题内容.以及可以自定义控件ID. 创建一个MFC Dlg对话框. ...
- MFC控件编程之鼠标跟键盘消息
MFC控件编程之鼠标跟键盘消息 在MFC中鼠标消息.键盘消息我们很常用.所以说一下. 鼠标消息分为客户区消息.跟非客户区消息. 一丶客户区消息 我们可以处理消息.来进行我们相应的函数即可. MFC添加 ...
- [MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧
前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是 ...
随机推荐
- CSS基础一
css作用 css将内容和样式相分离,便于修改样式.HTML 写网页的内容,CSS写内容的样式 CSS构成 p{ /*p为标签,也可以称为选择器,选择包住的内容的格式*/ font-size:12px ...
- python之支付
一,alipay方式 1,国内的alipay支付:我在网上找了好多的教程,大多数都是属于国内内支付的,所以在这里我就不详细介绍了, 操作:https://www.cnblogs.com/xuanan/ ...
- Codeforces 837 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 并没有找到难度评级但感觉是div3div3div3场. A题 题意:一个单词的价值是里面大写字母的个数,一篇文章的价值是里面所有单词的价值的 ...
- ehcache如何配置
1.pom.xml文件配置(主要针对jar包的引入) <ehcache.version>2.6.9</ehcache.version><ehcache-web.versi ...
- mysql 慢日志分析
mysql 调优首先需要找到那些有问题的SQL语句. 怎么找到这些语句呢? mysql 提供了很方便的功能. 1.慢日志 在my.cnf 文件中,增加如下配置 log-error ...
- JavaScript 平时记录
1,JS中的this 见下面例子,注意函数中的函数 中的this指的是window对象了!!! document.addEventListener('click', function (e) { co ...
- JAVA 8 日期工具类
JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...
- HTML之 一 标签
一 ,标签分类: 1.普通标签: <h1> hello </h1> hello 2.自闭和标签 <hr/> 二,书写html注意事项 1.标签不能交叉嵌套 2. 标 ...
- Codeforces Avito Code Challenge 2018 D. Bookshelves
Codeforces Avito Code Challenge 2018 D. Bookshelves 题目连接: http://codeforces.com/contest/981/problem/ ...
- 2019浙大校赛--J--Extended Twin Composite Number(毒瘤水题)
毒瘤出题人,坑了我们好久,从基本的素数筛选,到埃氏筛法,到随机数快速素数判定,到费马小定理,好好的水题做成了数论题. 结果答案是 2*n=n+3*n,特判1,2. 以下为毒瘤题目: 题目大意: 输入一 ...