当前位置: 首页 > ds >正文

【上位机——MFC】绘图

相关类

CDC类(绘图设备类):封装了各种绘图相关的函数,以及两个非常重要的成员变量m_hDC和m_hAttribDC
CPaintDC类,封装了在WM_PAINT消息中绘图的绘图设备
CClientDC类,封装了在客户区绘图的绘图设备

CGdiObject类(绘图对象类)
封装了各种绘图对象相关的操作,以及一个非常重要的成员变量m_hObject(绘图对象句柄)
CPen类,封装了画笔的操作
CBrush类,封装了画刷的操作
CFont类,封装了字体的操作
CBitmap,封装了位图的操作

代码示例


// MFCDrawView.cpp: CMFCDrawView 类的实现
//#include "pch.h"
#include "framework.h"
// SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的
// ATL 项目中进行定义,并允许与该项目共享文档代码。
#ifndef SHARED_HANDLERS
#include "MFCDraw.h"
#endif#include "MFCDrawDoc.h"
#include "MFCDrawView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif// CMFCDrawViewIMPLEMENT_DYNCREATE(CMFCDrawView, CView)BEGIN_MESSAGE_MAP(CMFCDrawView, CView)// 标准打印命令ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)ON_WM_PAINT()ON_COMMAND(ID_PEN, &CMFCDrawView::OnPen)ON_COMMAND(ID_BRUSH, &CMFCDrawView::OnBrush)ON_COMMAND(ID_BITMAP, &CMFCDrawView::OnBitmap)ON_COMMAND(ID_FONT, &CMFCDrawView::OnFont)
END_MESSAGE_MAP()// CMFCDrawView 构造/析构CMFCDrawView::CMFCDrawView() noexcept
{// TODO: 在此处添加构造代码}CMFCDrawView::~CMFCDrawView()
{
}BOOL CMFCDrawView::PreCreateWindow(CREATESTRUCT& cs)
{// TODO: 在此处通过修改//  CREATESTRUCT cs 来修改窗口类或样式return CView::PreCreateWindow(cs);
}// CMFCDrawView 绘图void CMFCDrawView::OnDraw(CDC* /*pDC*/)
{CMFCDrawDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码
}// CMFCDrawView 打印BOOL CMFCDrawView::OnPreparePrinting(CPrintInfo* pInfo)
{// 默认准备return DoPreparePrinting(pInfo);
}void CMFCDrawView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{// TODO: 添加额外的打印前进行的初始化过程
}void CMFCDrawView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{// TODO: 添加打印后进行的清理过程
}// CMFCDrawView 诊断#ifdef _DEBUG
void CMFCDrawView::AssertValid() const
{CView::AssertValid();
}void CMFCDrawView::Dump(CDumpContext& dc) const
{CView::Dump(dc);
}CMFCDrawDoc* CMFCDrawView::GetDocument() const // 非调试版本是内联的
{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFCDrawDoc)));return (CMFCDrawDoc*)m_pDocument;
}
#endif //_DEBUG// CMFCDrawView 消息处理程序void CMFCDrawView::OnPaint()
{CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CView::OnPaint()//dc.Rectangle(100,100,300,300);}void CMFCDrawView::OnPen()
{// TODO: 在此添加命令处理程序代码CClientDC dc(this);CPen pen(PS_SOLID,2,RGB(255,0,0));CPen* oldPen = dc.SelectObject(&pen);dc.Rectangle(100, 100, 300, 300);dc.SelectObject(oldPen);pen.DeleteObject();}void CMFCDrawView::OnBrush()
{// TODO: 在此添加命令处理程序代码CClientDC dc(this);CBrush brush(RGB(0, 255, 0));CBrush* oldBrush = dc.SelectObject(&brush);dc.Rectangle(100, 100, 300, 300);dc.SelectObject(oldBrush);brush.DeleteObject();}void CMFCDrawView::OnBitmap()
{// TODO: 在此添加命令处理程序代码//添加位图资源(操作资源无需写代码)//创建一个和当前DC相匹配的内存DCCClientDC dc(this);CDC memdc;memdc.CreateCompatibleDC(&dc);//将位图数据送给内存DCCBitmap bmp;bmp.LoadBitmap(IDB_BITMAP1);CBitmap* oldmp = memdc.SelectObject(&bmp);//成像dc.BitBlt(100,100,48,48,&memdc,0,0,SRCCOPY);//将位图数据要回来memdc.SelectObject(oldmp);//销毁位图bmp.DeleteObject();//销毁内存DCmemdc.DeleteDC();}void CMFCDrawView::OnFont()
{// TODO: 在此添加命令处理程序代码CClientDC dc(this);CFont font;font.CreatePointFont(300,_T("黑体"));CFont* oldFont = dc.SelectObject(&font);dc.TextOut(100,100, _T("hello"));dc.SelectObject(oldFont);font.DeleteObject();}
http://www.xdnf.cn/news/4346.html

相关文章:

  • 智能车载台如何成为工业4.0的智慧中枢?解码AORO V80技术革新
  • 某团小程序mtgsig,_token 生成逻辑分析
  • 音视频之H.265/HEVC编解码并处理
  • AUTOSAR图解==>AUTOSAR_SRS_EEPROMDriver
  • Kotlin-解构声明
  • Webpack 5 Module Federation 深度解析
  • 【网络编程】一、socket编程详解
  • 中达瑞和便携式高光谱相机:珠宝鉴定领域的“光谱之眼”
  • Python企业级MySQL数据库开发实战指南
  • Unity 游戏数量单位换算(K/M/B/T)
  • Transformer 与 LSTM 在时序回归中的实践与优化
  • Apache Doris 使用指南:从入门到生产实践
  • SpringCloud入门教程合集(1)-SpringCloud简介与Eureka+Feign实现服务注册中心、服务提供与服务消费
  • LightGBM算法原理及Python实现
  • AWS WebRTC如何实现拉流?内部是这样实现的
  • chili3d调试笔记12 deepwiki viewport
  • 学习Python网络爬虫的实例
  • 双系统电脑中如何把ubuntu装进外接移动固态硬盘
  • 使用DevTools工具调试前端页面,便捷脚本,鸿蒙调试webView
  • 使用 ANSYS SIwave 求解器在 ANSYS AEDT 中预测串行通道性能并生成眼图
  • mysql-视图特性,用户管理和使用c连接
  • C++笔记
  • Web3 应用中常见的数据安全风险及防护措施
  • 使用AI应用开发平台搭建夸奖机器人,玩转AI【COZE入门案例-第1课】
  • 精益数据分析(43/126):媒体网站商业模式的盈利与指标解析
  • RAG框架搭建(基于Langchain+Ollama生成级RAG 聊天机器人)
  • Windows远程连接MySQL报错,本地navicat能连接MySQL
  • Docker安装使用
  • Android SDK 开发中的 AAR 与 JAR 区别详解
  • BUUCTF Pwn [ZJCTF 2019]Login WP