TransparentBitmap函数怎么把一张图片的背景色去掉 变成透明的 本帖最后由 VisualEleven 于 2013-09-05 10:38:56 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void CMy1_6View ::TransparentBitmap(HDC hdc, HBITMAP hBitmap,short xStart,short yStart, short xadd,short yadd, COLORREF cTransparentColor)cTransparentColor就是要透明化的颜色值了,常用的值是RGB(255, 0, 255) 说白了就是把图片中有cTransparentColor这个颜色值的地方都去掉 能说的具体一点吗,我把cTransparentColor替换成RGB(255, 0, 255)就报错 本帖最后由 VisualEleven 于 2013-09-05 10:39:37 编辑 CBitmap DispBmp; CBitmap *OldBmp; CDC SourceDC; DispBmp.LoadBitmap(IDB_BITMAP1); SourceDC.CreateCompatibleDC(PDC); OldBmp = SourceDC.SelectObject(&DispBmp); ::TransparentBlt(PDC->m_hDC,0, 0,128, 128, SourceDC.m_hDC,0,0,128,128,RGB(0,0,0)); SourceDC.SelectObject(OldBmp); PDC需要定义 应该定义为什么类型。 能说清除点吗,我是菜鸟 ,是不是int // HDC hdc 显示句柄这个参数 要由 调用者 (caller) 给,就是 你 想 画到什么 上。通常 Caller 可以 :CClientDC dc(this);或者:CDC *pDC =GetDC();// 注意 函数 调用完后 要 ReleaseDC() 弱弱的问一下,CDC *pDC =GetDC;和 ReleaseDC()应该写在哪一行 CDC *pDC =GetDC();TransparentBitmap(pDC, hBitmap,xStart,yStart,xadd,yadd,cTransparentColor);ReleaseDC(pDC); 我有点乱,谁能给我发一个从头到尾的详细制作流程,我的分就给谁了。我的图片名称叫IDB_BITMAP1.bmp 大小是48*48 。要红色背景。谢谢了。 可以直接使用 TransparentBlt() 函数 ;连接 加入 msimg32.lib :void DrawTransparentBitmap(){CClientDC dc(this);CDC memDC;memDC.CreateCompatibleDC(&dc);HBITMAP old=(HBITMAP)memDC.SelectObject(m_bmp);// your bitmap !!!BITMAP bm;GetObject(m_bmp,sizeof(BITMAP),&bm);TransparentBlt(dc,0,0, bm.bmWidth,bm.bmHeight,memDC,0,0,bm.bmWidth,bm.bmHeight,RGB(255,0,0));memDC.SelectObject(old);DeleteObject(memDC);} 请问 转成 C#的代码需要 调用那些 API? richedit 页边距及插入ole对象 mfc开发mediat player,如何让视频充满播放器窗口? 如何让一个函数一直在主线程里运行? 如何让CEdit也具有 SetSel 这个函数 请叫VC编译错误 DX里面的Samples例子不能调试运行!急救。。。~~~ 关于屏蔽代理服务器。 能否讲一下在NDIS中间层过滤驱动程序的设计中接收、发送数据包的流程...... COleDateTime问题 怎样使生成的子窗口不能移动? 求一个好点子---------------------------------------- MFC 的~~~~ 大四毕业设计,想用VC写游戏,写什么样的好?
short yStart, short xadd,short yadd, COLORREF cTransparentColor)
cTransparentColor就是要透明化的颜色值了,常用的值是RGB(255, 0, 255)
CBitmap *OldBmp;
CDC SourceDC;
DispBmp.LoadBitmap(IDB_BITMAP1);
SourceDC.CreateCompatibleDC(PDC);
OldBmp = SourceDC.SelectObject(&DispBmp);
::TransparentBlt(PDC->m_hDC,0, 0,128, 128, SourceDC.m_hDC,0,0,128,128,RGB(0,0,0));
SourceDC.SelectObject(OldBmp);
这个参数 要由 调用者 (caller) 给,
就是 你 想 画到什么 上。通常 Caller 可以 :
CClientDC dc(this);
或者:
CDC *pDC =GetDC();// 注意 函数 调用完后 要 ReleaseDC()
TransparentBitmap(pDC, hBitmap,xStart,yStart,xadd,yadd,cTransparentColor);
ReleaseDC(pDC);
void DrawTransparentBitmap()
{
CClientDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
HBITMAP old=(HBITMAP)memDC.SelectObject(m_bmp);// your bitmap !!!
BITMAP bm;
GetObject(m_bmp,sizeof(BITMAP),&bm);
TransparentBlt(dc,0,0, bm.bmWidth,bm.bmHeight,memDC,0,0,bm.bmWidth,bm.bmHeight,RGB(255,0,0));
memDC.SelectObject(old);
DeleteObject(memDC);
}