MFC中使用CBitmap类进行绘图

2023-11-09

大家看名字就可以知道,这个类是用来绘制位图的,即以“.bmp”为后缀的图片。一般游戏之中,需要使用的图片比较多,都会将图片先存为文件,然后从文件中读取,而从文件中读取图片的步骤有以下几步:
1.建立一个与窗口DC兼容的内存DC
我们加载的图片是需要先放在一个内存中的DC里,然后把需要显示的图片从内存DC中绘到窗口DC中即可,我们可以认为内存DC就是一个个备胎,每个DC都是一个屌丝男士,窗口DC就是女神啦,女神需要谁去帮忙做事的时候,那个屌丝男士就和女神在一起了,当然是暂时的,呵呵。
我们首先定义一个内存DC对象;
CDC m_bgcDC;
然后就开始创建一个DC了;
m_bgcDC.CreateCompatibleDC(NULL);
看名字我们就可以知道它的意思了,创建一个兼容的DC。它的参数是CDC*类型的,即一个DC的指针,函数会创建和参数DC兼容的DC。如果我们将参数填为NULL,函数会自动创建和当前程序DC兼容的内存DC,所以我们可以直接设置为NULL。
2.加载资源中的位图
首先将位图添加进资源中,方法是右键工程名->添加->资源,选择Bitmap,点击导入,然后找到你的位图即可。位图添加进来后会有一个ID,大家在资源视图下的Bitmap那一栏下可以看到,位图的ID可以修改,默认是第一章是IDB_BITMAP1,事实上它是一个整型数字。大家可以将其编号为连续的数字,方便在循环中加载位图,和使用它们来显示动画效果。
接下来,就是代码部分了,我们先定义一个位图对象;
CBitmap m_bgBitmap;
然后就可以从资源中加载了
m_bgBitmap.LoadBitmap(IDB_BITMAP1);
3.选用位图对象
加载完毕后,我们需要做的就是将这张图和这个DC关联起来,可以说是将这个图放到内存DC中去,这个就是设置备胎的属性了。
m_bgcDC.SelectObject(&m_bgBitmap);
参数为要选择的位图对象指针。
4.将内存DC的内容粘贴到窗口DC中,绘制出来
由于我们的窗口DC使用的是指针,因此使用方式为
cDC->BitBlt(0,0,m_client.Width(),m_client.Height(),&m_bgcDC,0,0,SRCCOPY);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC中使用CBitmap类进行绘图 的相关文章

  • CComboBox 下拉时未选择 CurSel

    我在对话框中有一个按字母顺序排序的组合框 该组合包含多个字符串 但有些字符串在不同情况下重复 即我们有一个 开 和一个 开 一个 关 和一个 关 这看起来似乎多余 但这是有原因的 尽管现在这并不重要 重复项显然是一个接一个地出现在列表中 大
  • 如何在单独的线程中创建带有进度条的MFC对话框?

    我的应用程序可能需要一段时间才能连接到数据库 此连接是通过单个库函数调用建立的 即我无法将进度更新放在那里并进行回调或类似的操作 我的想法是在连接到数据库之前在单独的线程中创建一个带有进度条的对话框 该对话框将不断更改进度状态CProgre
  • 如何在基于 MFC 对话框的应用程序中捕获复选框的 MouseMove 事件?

    我的应用程序是一个基于 VC6 MFC 对话框的应用程序 具有多个属性页 我必须捕获控件上的鼠标移动事件 例如复选框 如何捕获 MFC 中复选框上的 mousemove 事件 复选框是一个按钮控件 例如 CWnd 从 CCheckBox 派
  • 如何在禁用组框时禁用组框文本?

    我面临组框文本的问题 我通过调用 EnableWindow FALSE 禁用了组框 问题是组框标题没有变灰 谁能告诉我为什么会发生这种情况以及如何摆脱这个问题 这似乎是 comctrl32 dll 中的一个错误视觉风格 https lear
  • 如果我没有为其相应的命令声明消息映射条目,如何阻止 MFC 禁用我的控件?

    我有以下问题 如果我没有相应消息的消息映射条目 假设 ID MYBUTTON1 MFC 将禁用我的工具栏 CToolbar 控件 有没有解决的办法 我对菜单也有同样的问题 但我发现您可以通过将 CFrameWnd m bAutoMenuEn
  • 同时显示同一文档的多个视图

    如何说服 MFC 文档 视图体系结构让我同时显示同一文档的两个不同视图 例如 说我的CDocument子类代表某种描述的档案 我想要一个用户界面 其中该存档中的所有条目的名称都显示在CListView子类显示在左侧窗格中 而当前所选条目的详
  • MFC> 将对话框连接到对话框类

    我在现有的资源文件中定义了一个新对话框及其控件 我还创建了一个新文件 它将处理从此对话框生成的事件 但我不确定如何连接这两者 是声明enum IDD IDD NEW DIALOG 连接两者所需的一切 或者我们应该添加一些其他声明 在 MFC
  • Boost::序列化和 MFC Doc/View 架构

    我正在移植现有的 MFC C 应用程序以对 XML 文件使用 Boost Serialization 我的 CDocument 对象包含应用程序的所有数据 我已将序列化函数实现为 template
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda
  • MFC:如何减少OnInitialUpdate()滚动的时间成本?

    我需要打印多行数据 每行都可以进行文本换行 因此高度会有所不同 要进行滚动 我需要导出总高度 由于每条线可能有不同的高度 我只能遍历每条线来累加高度 如下所示 void CMyScrollView OnInitialUpdate for a
  • 使用 CSplitterWnd 在 CChildFrame 中创建多个视图

    我正在使用 MFC MDI 我需要创建如下视图 我的 ChildWnd 分为两部分 它们是LeftView CView 和RightView CScrollView LeftView 分为两部分 TreeView 和 FormView 我怎
  • 如何在现有 Windows 应用程序中获得 ATL 支持

    我正在 Visual Studio 2012 中使用 Qt 5 3 1 构建一个应用程序 我还想使用一个硬件库 这需要我向项目添加一个简单的 ATL 对象 这可以通过使用 Visual Studio 向导来完成 该向导抱怨我的项目既不是 M
  • 与 UltraHD 兼容的 CHtmlView

    CHtmlView与 UltraHD 分辨率不兼容 实现 UltraHD 感知并不仅仅在于使用正确的 HTML CSS 打印预览机制失败并裁剪页面 许多个月前 微软承认这是一个问题 但没有解决它 我的应用程序大量使用CHtmlView用于显
  • 如何发光最小。最大和关闭按钮?

    我按照以下指南使用 DWM API 创建自定义 Aero 框架 My work void CMainFrame OnActivate UINT nState CWnd pWndOther BOOL bMinimized CFrameWnd
  • 如何调整 CWnd 内 WPF 控件的大小?

    我正在托管 WPFUserControlMFC 内部CWnd 它工作得很好 我现在需要弄清楚如何与其父控件一起调整控件的大小 我已经迷上了OnSize我正在打电话GetWindowRect并将结果设置为我的控件 如下所示 void CChi
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 想要将 ColeDateTime 转换为 CTime

    我正在从数据库中读取日期时间ColeDateTime格式 我想将其转换为CTime获取日期 月份 年份和时间 CString repDt this will hold the datetime which i read from Datab
  • 您可以将 CMFCVisualManager 与基于对话框的应用程序一起使用吗?

    您可以将 CMFCVisualManager 与基于对话框的应用程序一起使用来更改应用程序的外观吗 如果是这样 它是如何完成的 这个想法是使用随 MSVC 2008 发布的 MFC 功能包来更改控件 例如按钮 的形状 颜色等 不 不能这样做
  • 如何通过MFC将应用程序设置保存到注册表中?

    我有一个由 MFC 项目向导创建的 MFC 应用程序 我想在注册表中保存 读取应用程序设置 所以问了这个question https stackoverflow com questions 1880275 good c registry w
  • 发送WM_SETTEXT时如何避免EN_CHANGE通知?

    我有一个 CEdit 派生控件 当基本数据为空时 该控件显示字符串 N A 我最近添加了代码 以在控件获得焦点时清空控件 SetWindowText 并在用户离开焦点时将其设置回 N A SetWindowText N A 控空 唯一的问题

随机推荐

  • 实现【企业微信自建应用使用uni-app H5 开发】,并解决【uni-app集成微信JSSDK(wx、jWeixin)变量冲突问题】

    目录 企业微信的开发与调试 企业微信应用主体逻辑 登录 构造网页授权链接 企业微信SDK配置 demo案例 重要bug修复方法 总结 企业微信的开发与调试 在本地开发基础代码和UI 发布到测试环境进行测试 无法本地调试接口 因为web浏览器
  • AltiumDesigner15.1导出3D PDF 图文教程

    ALtiumDesigner更新的速度就一个字 快 不过从15 4 15出来 貌似很久都没有更新了 等了很久 今天终于出来了 O O哈哈 因为早就耳闻AD15 1会带有3D输出功能 能够直接输出到PDF 这个好玩的功能 怎么能错过 本文就是
  • 时序基本介绍——Jitter与Skew区别

    在时序分析当中 有些基础概念还是要认真了解的 时钟抖动 Clock Jitter 和时钟偏移 Clock Skew 经常容易混淆 时序设计中 对于时钟的要求是非常严格的 因此FPGA中也有专用的时钟管脚 对应着专用的时钟区域BUFG BUF
  • 技术工具类:IDEA集成SonarQube并使用

    1 安装插件 从 File gt Settings gt Plugins 搜索 sonar 如下图 直接点击安装即可 安装成功后重启IDEA 在Settings gt Tools 中找到 SonarLint 如下图 在Coniguratio
  • uni-app提供开箱即用的SSR支持

    SSR 服务端渲染 可以给SPA站点带来两大核心优势 更好的SEO 更快的首屏渲染 很多uni app开发者都在积极尝试SSR 但大多没入门就放弃了 原因在于SSR颇高的技术门槛 vue js 官网在介绍 SSR 章节时的描述如下 本指南将
  • Python pycharm(windows版本)部署spark环境

    一 部署本地spark环境 1 1 安装好JDK 下载并安装好jdk1 7 配置完环境变量 1 2 Spark环境变量配置 去http spark apache org downloads html网站下载相应hadoop对应的版本 我下载
  • GD32 ADC检测电压

    GD32 ADC检测电压 https blog csdn net yangkunhenry article details 112757855 GD32的参考电压在规格书上没有查到 但是由于GD32 和STM32的 某种关系 STM32 的
  • 基本农田卫星地图查询_谷歌地图 最新版v7.3.0

    谷歌地图整合Google的本地搜索以及驾车指南两项服务 能够鸟瞰世界 将取代目前桌面搜索软件 谷歌地图可在虚拟世界中如同一只雄鹰在大峡谷中自由飞翔 登陆峡谷顶峰 潜入峡谷深渊 谷歌地图使用界面 相关软件 版本说明 下载地址 谷歌卫星地图下载
  • 感受了一下myspace

    今天去 www myspace com 看了看 感觉还可以 这里是年轻人交流的一个平台 可以了解当前世界年轻的喜好 他们做什么 有想些什么 可以和自己对比 把握时代信息 我觉得还是有点必要 就想当初我进入 天涯 时一样 希望从中能学到一些东
  • qt opengl 加载3d模型(obj格式)

    和一般c 程序加载3d模型一样 解读出数据内容 再用一个常规的着色程序就可以了 我实现的效果如下 采用的免费模型 实现思路和前面的略有不同 就是把自己生成顶点 纹理 法线的过程变成从文件读取了 我的obj文件如下 mtllib C User
  • 征服面试官:RxJava 原理篇 掌握这篇面试题汇总,吊打面试官!

    1 RxJava 如何实现线程切换 subscribeOn 是通过新建 Observable 的方式 使用 OnSubscribe 类的方式去做到线程切换的 observeOn 是通过 operator 操作符的形式去完成线程切换的 所以他
  • C++ 函数模板和类模板--泛型编程

    所谓函数模板 实际上是建立一个通用函数 其函数类型和形参类型不具体指定 用一个虚拟的类型来代表 这个通用函数就称为函数模板 凡是函数体相同的函数都可以用这个模板来代替 不必定义多个函数 只需在模板中定义一次即可 一 函数模板初识 1 为什么
  • java基础知识点

    作者简介 哪吒 CSDN2022博客之星Top1 CSDN2021博客之星Top2 多届新星计划导师 博客专家 专注Java硬核干货分享 立志做到Java赛道全网Top N 本文收录于 Java基础教程系列 目前已经700 订阅 CSDN最
  • Java JDK11快速下载地址

    Linux deb 地址一 deb 地址二 rpm 地址一 rpm 地址二 tar gz 地址一 tar gz 地址二 MacOS dmg 地址一 dmg 地址二 tar gz 地址一 tar gz 地址二 Windows exe 地址一
  • Android studio导入图片出现下划红线怎么破

    首先 Android studio的图片命名需要全部字母小写 其次 导入的话 复制文件paste到drawable就可以 红线不是导入操作的问题
  • Vue的监视属性watch、深度监视以及监视的简写

    一 两种监视方式 1 watch属性直接监视 如果刚开始确定监视对象 在vue中可以直接使用watch属性实现监视 watch 正常写法 Info immediate true handler newValue oldValue conso
  • 栈、队列的基本概念和操作

    目录 一 栈 stack 了解 1 1 栈的实现和操作 二 队列 queue 了解 2 1 队列的实现与操作 2 2 双端队列 一 栈 stack 了解 概念 栈 stack 有些地方称为堆栈 是一种容器 可存入数据元素 访问元素 删除元素
  • hive指定字段插入数据,包含了分区表和非分区表

    1 建表 语句如下 CREATE EXTERNAL TABLE ods lineitem full l shipdate date l orderkey bigint l linenumber int l partkey int l sup
  • 【使用kubeadm安装部署K8S】

    问题 使用kubeadm安装部署K8S 该篇文章介绍利用kubeadm进行安装部署K8S 方法 1 准备环境 软件环境 软件 版本 操作系统 CentOS7 9 x64 mini Docker 19 ce Kubernetes 1 20 服
  • MFC中使用CBitmap类进行绘图

    大家看名字就可以知道 这个类是用来绘制位图的 即以 bmp 为后缀的图片 一般游戏之中 需要使用的图片比较多 都会将图片先存为文件 然后从文件中读取 而从文件中读取图片的步骤有以下几步 1 建立一个与窗口DC兼容的内存DC 我们加载的图片是