📄 subject_62274.htm
字号:
<p>
序号:62274 发表者:汉时明月 发表日期:2003-11-25 19:52:48
<br>主题:各位大虾,怎样使位图的背景色与对话框的颜色一样???
<br>内容:如题:如果要在对话框的picture 控件里显示的位图的背景色与对话框颜色一致,如何作?就像背景透明那样,只显示主要的图像 <BR>谢谢各位<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:萨达姆的黑手掌 回复日期:2003-11-25 22:04:56
<br>内容: 我记得在directdraw里是设关键色,MFC或是API有没有这种函数就不知道了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:BigJames 回复日期:2003-11-26 11:31:40
<br>内容:那可以就得自己装载控制bmp了。<BR>看一下CImageList,在create的时候,指定和bmp背景色匹配的掩码,然后在你需要的地方/时间把他画到屏幕上就行了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:元元 回复日期:2003-12-02 15:25:15
<br>内容:对话框的picture 控件的hdc, hBitmap指的是位图句柄,xStart和yStart在控件上<BR>开始画的位置,位图的背景色,这是你需要屏蔽的,用法如下所示:<BR>DrawTransparent(hDC, hBitmap, 0, 0, RGB(255, 255, 255));<BR>RGB(255,255,255)表示要屏蔽图像中的白色<BR><BR>void DrawTransparent( HDC hdc, HBITMAP hBitmap, int xStart, int yStart, <BR> COLORREF cTransparentColor)<BR>{<BR> BITMAP bm;<BR> COLORREF cColor;<BR> HBITMAP bmBackground, bmObject, bmSave; <BR> HDC hdcBackground, hdcObject, hdcTemp, hdcSave;<BR> POINT ptSize; <BR><BR> GetObject( hBitmap, sizeof( bm ), (LPSTR)&bm );<BR> ptSize.x = bm.bmWidth; <BR> ptSize.y = bm.bmHeight; <BR><BR> //-------------------------------------------------------------<BR> // Create compatible DC<BR> //-------------------------------------------------------------<BR> hdcTemp = CreateCompatibleDC( hdc ); <BR> hdcSave = CreateCompatibleDC( hdc );<BR> hdcBackground = CreateCompatibleDC( hdc );<BR> hdcObject = CreateCompatibleDC( hdc ); <BR> <BR> SelectObject( hdcTemp, hBitmap ); <BR> // save the bitmap<BR> bmSave=CreateCompatibleBitmap(hdc,ptSize.x, ptSize.y);<BR> SelectObject(hdcSave,bmSave);<BR> BitBlt( hdcSave, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY );<BR><BR> //---------------------------------------------------------------<BR> // Create a bitmap for each DC. DCs are required for a number of<BR> // GDI functions. Monochrome DC ------get a white background<BR> //---------------------------------------------------------------<BR> bmBackground = CreateBitmap( ptSize.x, ptSize.y, 1, 1, NULL );<BR> SelectObject( hdcBackground, bmBackground ); <BR> <BR> cColor = SetBkColor( hdcTemp, cTransparentColor ); <BR> BitBlt( hdcBackground, 0, 0, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCCOPY );<BR> SetBkColor( hdcTemp, cColor ); <BR><BR> //---------------------------------------------------------------<BR> // Monochrome DC --- get a white object<BR> //---------------------------------------------------------------<BR> bmObject = CreateBitmap( ptSize.x, ptSize.y, 1, 1, NULL );<BR> SelectObject( hdcObject, bmObject );<BR> BitBlt(hdcObject, 0, 0, ptSize.x, ptSize.y, hdcBackground, 0, 0, NOTSRCCOPY );<BR> <BR> BitBlt( hdc, xStart, yStart, ptSize.x, ptSize.y, hdcBackground, 0, 0, SRCAND ); <BR> BitBlt( hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcObject, 0, 0, SRCAND);<BR> BitBlt( hdc, xStart, yStart, ptSize.x, ptSize.y, hdcTemp, 0, 0, SRCPAINT );<BR><BR> BitBlt( hdcTemp, 0, 0, ptSize.x, ptSize.y, hdcSave, 0, 0, SRCCOPY );//restore<BR><BR> DeleteDC( hdcTemp );<BR> DeleteDC( hdcBackground);<BR> DeleteDC( hdcObject );<BR> DeleteDC( hdcSave );<BR> <BR> DeleteObject( bmBackground );<BR> DeleteObject( bmObject );<BR> DeleteObject( bmSave ); <BR> <BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -