【MFC系列-第20天】CDC绘图类成员介绍
20.1 三大坐标系:屏幕、客户区和非客户区
20.2 三大派生类:
a)CPaintDC
(客户区标准绘图),内部封装函数是:BeginPaint
和EndPaint
b)CClientDC
(客户区非标准绘图),内部是:::GetDC
和ReleaseDC
(CWnd::GetDC
的功能有写重复)和ReleaseDC
CDC* pDC = this->GetDC(); // CWnd::GetDC(非静态)
pDC->Ellipse(CRect(point.x-10,point.y-5,point.x+10,point.y+5));
this->ReleaseDC(pDC);//忘记了之后容易造成GDI泄漏,在任务管理器中可以观察泄漏情况
CDialogEx::OnLButtonDown(nFlags,point);
c)CWindowDC
(非客户区绘图),内部是:GetWindowDC
和ReleaseDC
d)CMemoryDC
(内存DC
),自己封装
GetDC
创建了一个新的GDI
对象:忘记了ReleaseDC
之后容易造成GDI泄漏??
20.3 基本图形函数:
直线:MoveTo、LineTo,LineTo...
折线:PolyLine
多边形(包括三角形):Polygon
矩形:Rectangle
圆形:Ellipse
圆角矩形:RoundRect
圆弧:Arc
、(ArcTo
也要与MoveTo
连用)
饼形:Pie
GDI对象包括:HDC、HICON、HCURCOR、HPEN、HBRUSH、HFONT、HBITMAP、HRGN、HPALLETE
20.4 GDI对象之一——CPen类对象
两对相反的函数是:CreatePenIndirect
和GetLogPen
,FromHandle
和operator HPEN
CPen::CPen: Constructs a CPen object.
CPen::CreatePen: Creates a logical cosmetic or geometric pen with the specified style, width,
and brush attributes, and attaches it to the CPen object.
CPen::CreatePenIndirect: Creates a pen with the style, width, and color given in a LOGPEN structure, and attaches it to the CPen object.
CPen::FromHandle: Returns a pointer to a CPen object when given a Windows HPEN.
CPen::GetLogPen: Gets a LOGPEN underlying structure.
CPen::operator HPEN
构造
方法一
LOGPEN lp = { PS_DASHDOTDOT ,1,0,RGB(255,0,0)};if (!(HPEN)m_pen)//如果不是因为二义性编译本不会出错{m_pen.CreatePenIndirect(&lp);}
方法二
m_pen.CreatePen(PS_DASHDOTDOT, 1, RGB(255, 0, 255));
方法三
CPen pen(PS_SOLID, 3, RGB(255, 0, 0));
20.5 GDI对象之二——CBrush类对象
两对反函数
operator HBRUSH与FromHandle
CreateBrushIndirect与GetLogBrush
CBrush::CBrush: Constructs a CBrush object.
CBrush::CreateBrushIndirect
Initializes a brush with the style, color, and pattern specified in a LOGBRUSH structure.
CBrush::CreateDIBPatternBrush
Initializes a brush with a pattern specified by a device-independent bitmap (DIB).
CBrush::CreateHatchBrush:栅格
CBrush::CreatePatternBrush:位图
CBrush::CreateSolidBrush:纯色
CBrush::CreateSysColorBrush 系统颜色
CBrush::GetLogBrush Gets a LOGBRUSH structure.
CBrush::operator HBRUSH
20.6 GDI对象之三——CFont类对象
两对反函数:
CreateFontIndirect和GetLogFont
CFont::operator HFONT和CFont::FromHandle
CFont::CFont Constructs a CFont object.
CFont::CreateFont: Initializes a CFont with the specified characteristics.
CFont::CreateFontIndirect:最常用标准创建字体
CFont::CreatePointFont简易创建字体
CFont::GetLogFont获取字体描述
CFont::operator HFONT
LOGFONT
lfFaceName 字体名称
lfHeight:子体大小
lfCharSet:GB2312_CHARSET
lfWeight :粗度(400是Normal,700是粗体)
lfWidth 一般是字体大小的一半
lfItalic 斜体;
lfUnderline 下划线;
lfStrikeOut 删除线;
lfEscapement:360的10倍,比如2700代表270度。
方法一
LOGFONT lf = {24};// lf.lfCharSet = GB2312_CHARSET;// lf.lfWidth = 14;
_tcscpy_s(lf.lfFaceName,_countof(lf.lfFaceName), _T("华文彩云"));
m_font.CreateFontIndirect(&lf);
方法二
if (!m_font.m_hObject)m_font.CreatePointFont(120, _T("宋体"));
输出
CFont* pOldFont = dc.SelectObject(&m_font);dc.SetBkColor(RGB(0, 255, 0));dc.SetBkMode(TRANSPARENT);dc.SetTextColor(RGB(255,0,0));dc.TextOut(100, 100, _T("测试CFont类字体创建函数!"));pOldFont->GetLogFont(&lf);
【MFC系列-第20天】CDC绘图类成员介绍相关推荐
- 【MFC系列-第11天】CWinApp类成员分析
11.1 资源管理器开发(C语言) 三种位运算 //#include <AtlBase.h> //混合 c_file.attrib |= _A_HIDDEN|_A_RDONLY; //判断 ...
- 【MFC系列-第19天】初步认识GDI绘图技术
WM_PAINT消息测试 调试输出字符串 OutputDebugSting(_T("WM_PAINT-OnPaint\n")); 1.WM_PAINT:功能和发生时间 2.Begi ...
- MFC中的CDC 绘图
MFC中的CDC 绘图 绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如: void CTestView::OnDraw(CDC* /*pDC*/) { C ...
- 【MFC系列-第24天】梯形分页和蝴蝶QQ宠物的实现
CDC(HDC)绘图类: 五大GDI对象类:CPen,CBrush,CFont,CBitmap,CRgn 24.1 梯形分页的双缓冲改进和尺寸自适应 24.2 蝴蝶跟随鼠标点击运动 class CHi ...
- 【MFC系列-第22天】GDI算法实战——过渡色
关注公号[逆向通信猿]更精彩!!! 第22天 GDI算法实战 CDC(HDC)绘图类: 五大GDI对象类:CPen,CBrush,CFont,CBitmap,CRgn 22.1 走马灯 设置定时器 S ...
- TeeChart替代品,MFC下好用的高速绘图控件-(Hight-Speed Charting)
相关链接: C++ GUI 绘图控件目录 MFC VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入 VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图, ...
- 【MFC系列-第23天】CMemoryDC的封装过程
CDC(HDC)绘图类: 五大GDI对象类:CPen,CBrush,CFont,CBitmap,CRgn 23.1 LoadImage API HANDLE LoadImage(HINSTANCE h ...
- 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。
CDC类简介:(摘抄自鸡啄米博客) CDC类是一个设备上下文类. CDC类提供了用来处理显示器或打印机等设备上下文的成员函数,还有处理与窗口客户区关联的显示上下文的成员函数.使用CDC的成员函数可以进 ...
- Seaborn系列(三):分布统计绘图(distribution)
Seaborn系列目录 文章目录 1. 分布统计绘图API概述 2. displot单变量分布图(直方图.核密度.累积分布) 2.1 displot函数绘制单变量分布图 2.2 displot直方图k ...
最新文章
- winform 界面设计
- python使用esmre代替ahocorasick实现ac自动机[多模匹配]
- python读取指定字节长度的文本
- js 获取 屏幕 可用高度...
- HDU-5249 KPI(STL or 权值线段树)
- java动态代理--代理接口无实现类
- DNN:DL讨论与DNN经典论文汇总
- c mysql 双主复制_mysql双主复制及使用keepalived作高可用的配置详解
- 99%的人都会遇到的Python “用户环境”问题
- 深入解析oracle电子版,深入解析Oracle数据库
- httping的使用介绍
- 利用Python的PyPDF2库,根据论文标题批量修改pdf的文件名
- 蒙特卡洛(Monte Carlo)
- 团队项目:即时聊天软件 需求分析、用例、UI原型
- Android 模拟器(window/Mac)
- Unity分屏显示效果
- 宝石熔炼设备可以融化黄金吗?
- Hard-Margin SVM(支持向量机)
- IT运维和自动化运维以及运维开发有啥不同?能解释下吗?
- DOM实现元素拖拽,滚轮事件和特效动画缓冲运动处理
热门文章
- JMX和Spring –第3部分
- ZK的实际应用:MVVM –加载和渲染数据
- 带有Jersey和Spring的RESTful Web应用程序
- LeWeb – 2011 –综述
- 为什么线程池里的方法会执行两次_面试官问你java都有哪些线程池,自己是否自定义过线程池...
- docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...
- 计算机二级access模考软件_计算机二级考前通关大礼包来啦!各科目模考软件、视频教程,更有往年真题、最新考纲等打包送!...
- java int integer内存_java中一个integer对象的内存占用是多少?可以通过java方法输出吗?...
- ios html正则表达式,ios 正则表达式去html标签
- python中如何调用或修改元组中的元素_python 元组的使用方法