MFC如何使用GDI+,button加载png

告别默认丑界面:手把手教你用MFC打造无边框+PNG按钮的现代化桌面应用 本文详细介绍了如何通过MFC框架实现无边框窗口和PNG按钮的现代化桌面应用界面改造。从去除默认边框到高级背景处理技术,再到PNG按钮的完整实现,手把手教你将复古的MFC应用升级为符合当代设计趋势的精致界面,显著提升用户体验和视觉吸引力。 阅读详情

首先感谢 Darren Sessions、Christian Graus、Joe Woodbury 的开源,不然小菜我也无法完成想要实现的功能。

 

本人在项目中需要实现button加载PNG图片,且在鼠标在button区域时相应一个事件,比如再加载一张图,或者把一加载上去的图加亮什么的。

 

PS:翻看国内现存的资料终于找到了解答,那就是连接到了国外网站,终于不像国内下载个代码不仅仅要你注册,你说回复你的主题还是能理解的,还要我付费,这你MTD何必呢,穷疯了,你多挂些广告,加代码让我们点了广告才能下载也得嘛,是不?不是商业机密的东西至于那么要紧?两千年继承下来就是“闭门造车”

 

参照下面3篇文章就能完成想要的功能。

 

1,Starting with GDI+

http://www.codeproject.com/KB/GDI-plus/startinggdiplus.aspx

 

2,Loading JPG & PNG resources using GDI+

http://www.codeproject.com/KB/GDI-plus/cgdiplusbitmap.aspx

 

3,A user draw button that supports PNG files with transparency, for Visual C++ 6.0 and VS2005

http://www.codeproject.com/KB/buttons/GdipButton.aspx

 

 

前两篇主要是添加对应代码来启动GDI+,因为我想要的功能是第三个中才有的,但是他使用了前两篇中的.CPP和.H,所以必须遵循前两篇的规则来加代码。

 

其实上述文章并不难看懂(连我这个四级都没过的人都能看懂),耐心点看就好了。

 

其实第一篇和第二篇要加的地方是一样的,但是要完成的demo有区别罢了。

就按第二篇来配置

对于第二篇中说要添加的地方:

 

GDI+ needs to be initialized before any GDI+ calls are made. I suggest adding the following data member to the class derived from CWinApp:

而不是CTest00Dlg中

而是在Test00.h中

class CTest00App : public CWinApp
    {
   public:
          CTest00App();
          ULONG_PTR m_gdiplusToken;////******** here

...............

}

Test00.cpp中

BOOL CTest00App::InitInstance()
   {
       AfxEnableControlContainer();

   Gdiplus::GdiplusStartupInput gdiplusStartupInput;////******** here
       Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);////******** here

................

}

重载这个的时候,因为看到头晕了,所以用向导找到对应添加的地方,就手动添加的 - =;

int CTest00App::ExitInstance()
   {
       Gdiplus::GdiplusShutdown(m_gdiplusToken);
 
       return CWinApp::ExitInstance();
   }

 

 

 

MFC 自绘按钮显示 PNG 图片 本实例继承 CButton 实现一个自绘按钮的控件,可以显示 PNG 图片,需要依赖 GDI+ 库。 立即下载

相关推荐

pb高版本显示PNG

最基本的功能,没有显示序图式风格(如动态工具栏)

MFC 自绘按钮显示 png 图片

MFC 有一个自带按钮的控件类 CButton,这个控件可以满足我们一般的按钮功能,但是想要个性化的界面要求,CButton 就无法满足了。所以我们需要自绘一个按钮来满足个性化要求,但同时又不失去 CButton 应有的功能。基本步骤如下:1、自定义一个类,然后继承自 CButton 类。2、重写 CButton 类的 DrawItem 成员函数。3、加载一个 png 图片,并显示出来。本例源码下载。

baidu_15765107的博客 1137

MFC 自绘按钮 集合 (加载png图片 无规则 xp 动感效果)

MFC 自绘按钮 集合 (加载png图片 无规则 xp 动感效果) 这是我初学时期的收集并修改的代码 现在贡献出来啦

MFC的PNG图片按钮

MFC的PNG图片按钮 #pragma once #include "afxwin.h" ///////////////////////////////////////////////////////////////////// // 工程: YF_GCM -> ButtonDemo // 作者: ** // 描述: 自绘制位图按钮 // 主要函数: // Set...

5474

GdipButton_demo.rar_DEMO_GDIPlus png_GdipButton_gdiplus

Gdiplus 实现界面美化 bmp图片装饰背景 png图片装饰按钮

vc++ MFC下实现Png图片美化CButton类

摘要:VC/C++源码,界面编程,CButton,MFC,GDI  MFC下CButton的派生类,实现Png美化Button,集成了GDI初始化函数,事先调用InitGdiplusLib();函数。

MFC 按钮上贴png图片 边框为透明的

加载pngbutton类 fff.cpp 加上外部定义: ULONG_PTR gdiplusToken; InitInstance加上: GdiplusStartupInput gdiplusStartupInput; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); stdafx.h加上: #inclu

songyimin1208的博客 4475

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

MFC利用GdipButton实现png按钮,并在此基础上实现图片适应按钮尺寸的缩放

不得不说,codeproject是个好东西,昨天就一直在查这个png按钮怎么用,很多人都在说这个老外写的GdipButton,可惜家里的网登不上,老外的网站下不了。后来又找了个pngbutton,发现不能适应我按钮的大小,就又费劲找到了老外的代码和demo。右键下载——what a nice day,竟然不用注册直接就可以另存为,帅呆了!!!! 然而,并没有那么简单,我先随便搞了一个界面,仿照里

skyfirelock的博客 4316

C++继承与多态 - 继承多态原理01

C++继承多态原理讲解

大秦坑王的专栏 2979

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3024

VS2010移植GdipButton出现CMemDC重定义问题

在移植GdipButton过程中,遇到CMemDC重定义问题,因为vs2010默认已经有了CMemDC类; 需要重命名移植的为CEMemDC(或者其他名字)。 移植参考链接:加载png图片按钮GdipButton按钮类 vs2010包含到 CMemDC类头文件 #include <afxcontrolbars.h> ...

albergemPi的博客 514

Rockchip RK3568实战:手把手教你调试I2S音频驱动(附ALSA设备树配置详解)

本文提供Rockchip RK3568平台I2S音频驱动的实战调试指南。详细解析了从硬件连接到软件配置的全过程,重点涵盖ALSA驱动框架下的设备树配置、时钟计算、DMA参数设置以及常见问题(如无声、爆音)的排查与解决方法,帮助开发者快速定位并解决音频驱动难题。

weixin_28358083的博客 499

MFC按钮Button自绘类GDI篇PNG资源介绍:为MFC应用添加高颜值按钮

MFC按钮Button自绘类GDI篇PNG资源介绍:为MFC应用添加高颜值按钮 去发现同类优质开源项目:https://gitcode.com/ 在MFC(Microsoft Foundation Class)应用程序开发中,如何打造一个视觉吸引力强的用户界面始终是一个重要课题。本文将为您详细介绍一款开源项目——MFC按钮Button自绘类(GDI篇+PNG),帮助您轻松实现美观的按钮效果。 项目...

gitblog_06738的博客 652

GPS定位不准?可能是GDOP在作怪!手把手教你优化卫星几何分布

本文深入解析了GPS定位精度不佳的常见原因——几何精度因子GDOP。通过剖析卫星几何分布对定位误差的放大效应,文章提供了从理解GDOP、PDOP、HDOP等关键指标,到使用专业APP实时诊断卫星天空图,再到利用在线工具提前规划最佳定位时机的完整实战指南。旨在帮助户外爱好者、无人机飞手及专业用户主动优化卫星几何条件,从而显著提升定位可靠性。

weixin_29062823的博客 306

新手避坑指南:在MacBook上为PyTorch正确配置MPS环境,跑通第一个YOLOv8训练

本文详细指导新手如何在MacBook上为PyTorch正确配置MPS环境,并成功运行YOLOv8训练。从环境准备、PyTorch安装到YOLOv8配置和性能调优,提供全面的避坑指南和实用技巧,帮助开发者充分利用Mac的GPU加速能力。

weixin_29100399的博客 229

VC++ 6.0集成GDI+加载显示PNG图像完整指南

在Windows图形编程中,GDI(图形设备接口)是基础绘图API,但其原生不支持PNG等现代图像格式的Alpha通道(透明度)。GDI+作为其增强版本,通过引入更丰富的图像编解码器和Alpha混合算法,解决了透明图像处理的技术瓶颈。这一特性对于需要高质量UI界面、游戏精灵或动态特效的应用程序具有重要价值,尤其在维护和升级遗留系统时。本文聚焦于如何在经典的VC++ 6.0开发环境中,通过手动配置集成GDI+库,并利用其`Image`和`Graphics`类,实现PNG图像的加载、透明合成与高效绘制,同时涵盖

weixin_30696427的博客 395

Allegro输出光绘文件规范

添加钻孔表的具体步骤为:1.通过屏幕右边的Visibility选项的Views列表,将Drill层打开2.将Visibility选项中的PIN和Via选项都选中,见下图所示: 参数设好之后关闭NC Drill/Parameters窗口,输出数控机床钻孔文件的命令菜单为:Manufacture=>NC=>NC Drill…,打开的窗口如下: 输出数控机床钻孔文件的具体步骤为: 上图是光绘输出的层控制窗口,还有一个窗口是输出参数的控制窗口,我们通过点击上图的第二个列表项General Parameters来

axingxiansen的博客 2809

MFC利用png实现透明按钮,可以直接加载PNG文件或先包含到程序资源中再加载。按钮的高亮与灰度图像都是自动生成。

在此示例中,我将ID设置为IDC_PLAY,并将变量名称设置为m_cPlay。在资源编辑器中,从res文件夹导入.png文件,并将资源类型设置为PNG。右键单击IDR_PNG1,选择属性,并将其重命名为有用的东西,IDR_PNG1IDR_PLAY在此示例中。使用资源编辑器在对话框中添加一个按钮,设置资源ID,然后在Caption框中删除文本。MFC利用GdipButton实现png透明按钮,并增加了直接加载PNG文件用作按钮图像,而不是之前须先包含到程序资源中再加载。第3步. 在程序启动时初始化 gdi+

gmajvfhp的专栏 870

(五)C++自制植物大战僵尸游戏LoadingScene的实现讲解

游戏启动后就会立即切换到游戏加载场景中。只有游戏资源文件加载完成后,才能进入游戏。Loadingscene类继承Cocos2d-x中的Scene父类,表明Loadingscene是一个场景类。切换到LoadingScene场景中,首先会创建该场景,会调用函数,在该函数中调用自己定义的方法实现指定功能。代码文件的位置如下图所示。

尔灵尔亿的博客 2006

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PNG透明背景按钮的实现(MFC)

问题描述: 当前要在对话框上添加一个以两个PNG图片作为背景的按钮,PNG图的背景是透明的,按钮也要做出相同的透明效果。并且鼠标不在按钮上时,按钮显示"bg1.png";鼠标移动到按钮上时,按钮显示"bg2.png" 开发环境为VS2010。 解决办法: 使用GDI+库装载PNG图片,并使用MFC Button Control和CMFCButton类结合,调用CMFCButton::Set

Woosa 2781

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

用MFC做漂亮界面之美化按钮(PNG透明贴图)

转自:https://blog.youkuaiyun.com/u011711997/article/details/52551106 上次我们学习了如何美化对话框的界面,这次我们为上次的对话框添加两个按钮,一个是关闭按钮,另一个是最小化按钮,好,现在我们先看一下效果: 是不是很难看,因为我们的对话框美化了,所以我们的按钮也要美化,因为采用贴图的方式来美化,所以,我先给出这两个按钮的PNG格式的图片,该图片支...

networmrlc的博客 1169

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MFC基本控件使用——按钮(Button)

昨天写了一个常用的控件Static静态文本框,今天再写一个同样常用的控件——Button按钮。其实,按钮的使用没什么说的,因为实在是太简单了。。。无非就是双击按钮,添加一个click事件,然后在OnClick( )函数内就可以为所欲为啦~~~但是!!!这样一来,写这篇文章就没有意义了,对吧?这里呢,我就说说一个我在用按钮控件最不爽的一个地方,那就是在按钮上使用图片。 为了界面的美观,我们往往会用...

p312011150的博客 1万+

告别WinXP风!手把手教你用GDI+和CMFCButton打造现代感MFC对话框(附完整源码)

本文详细介绍了如何利用GDI+和CMFCButton将传统的MFC对话框从过时的WinXP风格升级为现代UI。通过无边框设计、PNG按钮实现和交互效果优化,开发者可以显著提升MFC应用程序的视觉体验,同时保持代码的兼容性和性能。文章包含完整源码和实用技巧,帮助开发者快速实现界面现代化改造。

weixin_30463341的博客 496

【后端】MFC将按钮设置为图片显示

【后端】MFC将按钮设置为图片显示

qq_49018997的博客 2360
上一篇: 应用程序无法启动,因为应用程序的并行配置不正确解决方案一览
下一篇: VS2008编译boost库
ucasliming
博客等级 码龄16年 126粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值