在写完MFC之CButton空间重绘(GDI篇)后我以为会很快就能把GDI+篇弄出来。结果出了点意外,效果总是有不满意的地方。弄了好几天,才弄出一个满意的效果来。同GDI篇一样,实现了3种类型的按钮,以满足公司项目的需求,分别是下面三种类型:1.普通型按钮 2.菜单型按钮 3.静态按钮。(不规则,透明等效果完美的实现)
下面贴代码:
公共头文件(public.h):
#pragma once
#include "stdafx.h"
#include <atlimage.h>
//按钮的状态
enum
{
CTRL_NOFOCUS = 0x01, //普通
CTRL_FOCUS, //mousemove
CTRL_SELECTED, //buttondown
CTRL_DISABLE, //无效
};
//图片形式
enum
{
BTN_IMG_1 = 1, //
BTN_IMG_3 = 3, //3分图(1个图片内有3小图,下同)
BTN_IMG_4 = 4, //4分图
};
//按钮类型
enum
{
BTN_TYPE_NORMAL = 0x10, //普通BTN
BTN_TYPE_MENU, //菜单类型的BTN
BTN_TYPE_STATIC, //静态类型的BTN
};
对于上面所谓的图片形式分别是指下面三种:
1.(BTN_IMG_1)
2.(BTN_IMG_3)
3.(BTN_IMG_4)
头文件(PngButton.h)
#if !defined(AFX_PNGBUTTON_H__F33C59EA_E493_49CD_96C0_9D37FDD09749__INCLUDED_)
#define AFX_PNGBUTTON_H__F33C59EA_E493_49CD_96C0_9D37FDD09749__INCLUDED_
#include "Public.h"
#if _MSC_VER > 1000
#pragma once
#endif
class CPn