使用GDI加载PNG实现自定义不规则按钮

本文介绍如何利用GDI加载PNG图片来创建自定义不规则按钮。首先将PNG图片导入资源,然后在工程中引入GDI代码,并在窗口的.H和.CPP文件中定义对象和关联控件。在 OnInitDialog 函数中加载图片,并在stdafx.h中包含GDI+库。最后,运行程序即可看到效果,但要注意图片大小在设计时需确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不能直接截图!@!!!!气死了。,。改


1---先把按钮的图片载入资源里面,这样可以在后面直接获得它的ID号。

例如载入后:PNG图片ID号为  :IDB_PNG1


2---然后我们把一堆GDI的代码加入工程中,为了整洁新建立了文件夹,等会加载头文件的时候要考虑到下一层目录。

就是这一一堆代码:图片没显示。在一个文件夹理里。

不用看,添加进来待会在自己要添加的窗口DLG.CPP和DLG.H中定义几个变量即可。


3---然后来到目标窗口的.H文件PUBLIC中:

(1)--添加头文件     #include "pngbutton\GdipButton.h"


(2)---自定义一个对象,绿色部分,是一个按钮啊。CGdipButton m_cClose;//----图片按钮


3---然后来到.CPP中,添加头文件(其实头应该添加在之前那个.H才对把,我乱来了):#include "pngbutton\MemDC.h"


4--在一个函数中添加:DDX_Control(pDX, IDC_BUTTON1, m_cClose);即如下;

IDC_BUTTON1为要关联的按钮,不然人家怎么知道画到什么按钮上去。

void Other_title_Dlg::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_BUTTON1,m_cClose);
CDialogEx::DoDataExchange(pDX);
}


5--- 到    BOOL Other_title_Dlg::OnInitDialog()    初始化函数,加上加载图片的步骤,我把它放到最后面了:

//------------------------------------------------------------------------------

m_cClose.LoadStdImage(IDB_PNG14, _T("PNG"));//图片按钮
m_cClose.LoadAltImage(IDB_PNG15, _T("PNG"));//因为一个是按下的,所以添加了两个不知有没用
m_cClose.EnableToggle(TRUE);
//------------------------------------------------------------------------------


6---最后是在自己工程上的stdafx.h上添加了以下代码,关于添加GDI库文的,反正没了就不行。

#if defined(_MSC_VER) && _MSC_VER == 1200

#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif

#include <Specstrings.h>
#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;

// VS2005
#else 

#include <gdiplus.h>
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;

#endif //

#define WIN32_LEAN_AND_MEAN


7----然后运运行后就能够出现效果了:

原本是这样的:


贴图后使用是这个:



它有个问题贴图大小不能在窗口上自由更改,而是在美工作图的时候就已经要限制好大小。























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值