用bmp图像做界面,想把图像中的不需要部分(如图像背景)设置为底层图片相同色,mfc

如上图,只需“下一曲”的图片... 如上图,只需“下一曲”的图片 展开
 我来答
boythl
2012-12-09 · 超过12用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:33.6万
展开全部
jpg格式的可以直接透明,因为有透明通道,用vc的IPicture 接口
//显示JPEG图片
IPicture *pPic;

//load image from file stream
if(SUCCEEDED(OleLoadPicture(pStm, fstatus.m_size, TRUE,IID_IPicture, (LPVOID*)&pPic)))
{
long nWidth = 0, nHeight = 0; // 宽高,MM_HIMETRIC 模式,单位是0.01毫米
pPic->get_Width( &nWidth ); // 宽
pPic->get_Height( &nHeight ); // 高

CSize sz( nWidth, nHeight );
pDC->HIMETRICtoDP( &sz ); // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位
pPic->Render(pDC->m_hDC, 0, 0, sz.cx, sz.cy,
0, nHeight, nWidth, -nHeight, NULL);
}
追问
不会com编程啊,能在Q上讨论一下吗?
追答
用gdi+直接加载png格式图片,不需要com
上面给的例子是加载jpg格式
加载png就更简单了
Graphics imgraphics(this->m_dcMemBg->GetSafeHdc());
Image img(L"bottle.png");
Status sttImg = imgraphics.DrawImage(&img, 10, 10);
xu5237558997
2012-12-09 · 超过16用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:40.6万
展开全部
两种方法:
1.将图片的底色使用alpha混合,屏蔽掉某一种颜色。
2.最简单的就是请美工把你的图标做成底色为粉色的图片,由于GDI中的对BMP图片的处理,默认就是屏蔽掉了粉色,所以你绘制时图片背景始终是透明的。
追问
第2种方法没法,第一种方法可以具体点吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式