VC中使用GIF格式图片美化界面

  
VC中使用GIF格式图片美化界面
       在VC中最方便使用的是BITMAP,即位图格式,但是位图往往不能达到所需的效果,这里介绍一种方法使用GIF来美化界面.
       主要分为以下几个步骤:
1.         将 gif 的图像载入,用CImage
2.         通过CImage的HBITMAP操作得到HBitmap句柄
3.         用CImageList保存HBitmap
4.         在工具栏中使用CImageList
 
下面通过实例来解释:
1. 将 gif 的图像载入,用CImage
       #include <string>
       using namespace std;
      
       string strPath = “.//img//pic1.gif”;
       CImage   image;
image.Load( strPath.c_str() );
 
2.     通过CImage的HBITMAP操作得到HBitmap句柄
CBitmap bitmap;
bitmap.Attach( HBITMAP( image ) );
 
3.         用CImageList 来保存CImage
CImageList imageListSmall;
imageListSmall.Create(16,16, ILC_COLOR24 | ILC_MASH, 24,24); 
//注16,16是指image的大小, ILC_COLOR24是指所用的颜色为24色, ILC_MASK是指载入时可以进行特定颜色象素的屏蔽,24,24是指其初使大小,以及重新分配内存的大小
 
imageListSmall.Add(&bitmap, RGB(255,255,255) );
// RGB(255,255,255)表示屏蔽所有背景,这个是要与ILC_MASK一起使用的
4.         在工具栏中使用
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0("Failed to create toolbar/n");
        return -1;      // fail to create
}
 
// 设置图标
    m_wndToolBar.GetToolBarCtrl().SetImageList(&imageListSmall );
 
    // 设置工具栏大小
    CRect rectGen;
    CRect rectTool;
    m_wndToolBar.GetItemRect(0,&rectTool);
    m_wndToolBar.SetSizes( CSize(rectTool.Width(),rectTool.Height()), CSize(32,32) );
动态加载GIF动画 VC 实现 include "stdafx.h" #include "TransparentGif.h" #include "TransparentGifDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CTransparentGifApp BEGIN_MESSAGE_MAP(CTransparentGifApp, CWinAppEx) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() // CTransparentGifApp 构造 CTransparentGifApp::CTransparentGifApp() { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance } // 唯一的一个 CTransparentGifApp 对象 CTransparentGifApp theApp; // CTransparentGifApp 初始化 BOOL CTransparentGifApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); AfxEnableControlContainer(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CTransparentGifDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用 // “确定”来关闭对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用 // “取消”来关闭对话框的代码 } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return FALSE; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值