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桌面程序.下图是做成之后的效果: 我是 ...
随机推荐
- 谷歌浏览器运行Flash
最近有人问我谷歌浏览器的flash总是要点击手动运行才可以使用.看了很多网上很多教程,并没有比较好的解决方案. 自己找了相关资料后,找到了一个比较好的完整的.特此在这边放出来给大家使用. 新建记事本, ...
- vue中 关于$emit的用法
1.父组件可以使用 props 把数据传给子组件.2.子组件可以使用 $emit 触发父组件的自定义事件. vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( ev ...
- 【翻译】Flume 1.8.0 User Guide(用户指南) Processors
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- apache kylin的单节点及多节点安装
Kylin的使用安装文档Kylin简介Kylin是什么Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区.它提供Hadoop之上的SQL查询接口及多维分析(OLAP) ...
- Unity使用代码动态给按钮赋值各个状态下的图片
一个小知识点,怕忘记,所以记录下.废话不多说,直接上代码: 未赋值之前: 使用下面代码赋值: using UnityEngine; using UnityEngine.UI; public class ...
- 20155205 郝博雅 Exp9 Web安全基础
20155205 郝博雅 Exp9 Web安全基础 一.实验内容 一共做了13个题目. 1.WebGoat 输入java -jar webgoat-container-7.1-exec.jar 在浏览 ...
- 排序算法 (sorting algorithm)之 冒泡排序(bubble sort)
http://www.algolist.net/Algorithms/ https://docs.oracle.com/javase/tutorial/collections/algorithms/ ...
- java实现四则运算
http://blog.csdn.net/lip009/article/details/7768258 我之前找到的一个大神写的?还没看懂
- OpenGIS
OpenGIS(Open Geodata Interoperation Specification,OGIS-开放的地理数据互操作规范)由美国OGC(OpenGIS协会,Open Geospatial ...
- Robust Influence Maximization
一. 研究背景 在社会和经济网络中,影响最大化问题在过去十年中得到广泛的研究,由于其广泛应用于病毒式营销[1,2],突破检测[3],谣言监测[4]等.例如公司可以通过向初始用户(称为种子)发送免费 ...