怎么设置图片背景是透明的

lpszDefExt 2009-04-10 02:30:41
让图片背景与控件上颜色一致怎么设置
...全文
265 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonset7 2009-04-10
  • 打赏
  • 举报
回复
使用CImage类可以实现你的效果

  使用CImage的一般方法是这样的过程:

  (1) 打开应用程序的stdafx.h文件添加CImage类的包含文件:

#include <atlimage.h>

  (2) 定义一个CImage类对象,然后调用CImage::Load方法装载一个外部图像文件。

  (3) 调用CImage::Draw方法绘制图像。Draw方法具有如下定义:

BOOL Draw( HDC hDestDC, int xDest, int yDest,
int nDestWidth, int nDestHeight, int xSrc, int ySrc,
int nSrcWidth, int nSrcHeight );
BOOL Draw( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc );
BOOL Draw( HDC hDestDC, int xDest, int yDest );
BOOL Draw( HDC hDestDC, const POINT& pointDest );
BOOL Draw( HDC hDestDC, int xDest, int yDest,
int nDestWidth, int nDestHeight );
BOOL Draw( HDC hDestDC, const RECT& rectDest );

  其中,hDestDC用来指定绘制的目标设备环境句柄,(xDest, yDest)和pointDest用来指定图像显示的位置,这个位置和源图像的左上角点相对应。nDestWidth和nDestHeight分别指定图像要显示的高度和宽度,xSrc、ySrc、nSrcWidth和nSrcHeight用来指定要显示的源图像的某个部分所在的位置和大小。 rectDest和rectSrc分别用来指定目标设备环境上和源图像所要显示的某个部分的位置和大小。

  需要说明的是,Draw方法综合了StretchBlt、TransparentBlt和AlphaBlend函数的功能。默认时,Draw的功能和 StretchBlt相同。但当图像含有透明色或Alpha通道时,它的功能又和TransparentBlt、AlphaBlend相同。因此,在一般情况下,我们都应该尽量调用CImage::Draw方法来绘制图像。


linaren 2009-04-10
  • 打赏
  • 举报
回复
这估计需要重绘了
要透明效果还取决于图片的背景色比如是RGB(111,111,111)
图片控件继承一下
在OnPaint里加入如下类似代码
CPaintDC pDC(this);
CRect rect;
GetClientRect(&rect);
CBitmap BMP;
BMP.LoadBitmap(m_nBitmapID);//从资源里加载图片
CDC ImageDC;
ImageDC.CreateCompatibleDC(&pDC);
CBitmap *pOldImageBMP = ImageDC.SelectObject(&BMP);
TransparentBlt(pDC.m_hDC, 0, 0, rect.Width(),rect.Height(), ImageDC.m_hDC, 0, 0, rect.Width(),rect.Height(), RGB(111,111,111));
ImageDC.SelectObject(pOldImageBMP);
FootballBMP.DeleteObject();
delphi_new 2009-04-10
  • 打赏
  • 举报
回复
用画布自己画相同颜色

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧