VC+GDI+

其实网上都有很多关于VC6.0下做软件有关图片的加载当然.bmp的每一本书windows程序设计都有,但是对于.JPG和.png方法也很多了,流程有时候对于刚刚用GDI+的人来说都不知道写的是什么,并且在什么地方加什么都没有很清楚的说明,下面我简单地说一下GDI+加载背景图片的步骤

首先做一个mfc但是你得有GDI+(有三个文件一个是Includes文件夹包含了有关GDI+的头文件还有一个文件夹Lib包含了GdiPlus.lib还有一个文件是gdiplus.dll)总共大小大概是2.13M,

第二

在StdAfx.h中加入

#define UNICODE
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#include "./Includes/GdiPlus.h"
using namespace Gdiplus;
#pragma comment(lib,".//Lib//GdiPlus.lib")//其中点是当前文件夹

第三在对话框的头文件加入

private:
 BLENDFUNCTION m_Blend;
 ULONG_PTR gdiplusToken;
 GdiplusStartupInput gdiplusStartupInput;

第四

OnInitDialog函数中加入
 GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

在对话框的析构函数中加入

GdiplusShutdown(gdiplusToken);

在OnCreate函数中加入

//初始化gdiplus的环境
 // Initialize GDI+.
 m_Blend.BlendOp=0; //theonlyBlendOpdefinedinWindows2000
 m_Blend.BlendFlags=0; //nothingelseisspecial...
 m_Blend.AlphaFormat=1; //...
 m_Blend.SourceConstantAlpha=255;//AC_SRC_ALPHA

下面的工作就是绘制背景图片了(我的图片放在工程的res文件夹中因为下面我用的是相当路径.当然你可以用绝对路径)

在OnPaint函数中绘制对话框的背景图

 CPaintDC dc(this); // device context for painting这句是函数原来有的不用我们加
 // TODO: Add your message handler code here
 Graphics mGraphics(dc.GetSafeHdc());
 Image m_pImageback1(L"./res/http_imgloadCAGE3IVJ.jpg",TRUE);//这里的"./res/http_imgloadCAGE3IVJ.jpg"就是相当

//路径也可以是png图片
 CRect rcClient;
 GetClientRect(&rcClient);
 mGraphics.DrawImage(&m_pImageback1,0,0,rcClient.Width(),rcClient.Height());

在OnCtlColor函数中是绘制控件的背景绘制button控件的时候要把它属性里面的一个OWNERDRAW属性打钩上
 if(pWnd->GetDlgCtrlID()==IDC_STATIC2)//获取ID要是ID为IDC_STATIC要改为其他才能绘制背景
 {
  Graphics mGraphics(pDC->m_hDC);
  Image m_pImageback1(L"./res/http_imgloadCAHY80AQ.jpg",TRUE);
  CRect rcClient;
  GetDlgItem(IDC_STATIC2)->GetWindowRect(&rcClient);
  ScreenToClient(&rcClient);
  pDC->SetBkMode(TRANSPARENT);//这句是绘制背景透明很重要
  mGraphics.DrawImage(&m_pImageback1,0,0,rcClient.Width(),rcClient.Height());
  return (HBRUSH)GetStockObject(NULL_BRUSH); //这句是返回透明画刷
 }
  if(pWnd->GetDlgCtrlID()==IDC_BUTTON1)//记住要是按钮要把他的那个OWNERDRAW属性选上

 {
  Graphics mGraphics(pDC->m_hDC);
  Image m_pImageback1(L"./res/http_imgloadCAHY80AQ.jpg",TRUE);
  CRect rcClient;
  GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rcClient);
  ScreenToClient(&rcClient);
  pDC->SetBkMode(TRANSPARENT);
  mGraphics.DrawImage(&m_pImageback1,0,0,rcClient.Width(),rcClient.Height());
  return (HBRUSH)GetStockObject(NULL_BRUSH);
 }

当然上面只是我对部分控件的代码其他控件操作一样!

下面是我的工程的截图

下面是我的工程的截图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值