双缓冲和透明拷贝问题,请大虾赐教!

danielfeng 2004-11-03 09:52:45
目前在做一个视频捕捉的程序,得到摄像头每一帧画面之后画到Panel上。
现在已经做好了双缓冲绘制,能够很正常显示画面,不闪烁。代码类似这个样子:

HDCDisplay := GetDC(frmMain.pnlDisplay.Handle);
HDCTemp = CreateCompatibleDC(HDCDisplay);
SelectObject(HDCTemp, ImageID); // ImageID是摄像头捕捉到的画面的Handle
BitBlt(HDCDisplay, 0, 0, CapSize.Width, CapSize.Height, HDCTemp, 0, 0, 13369376);
ReleaseDC(frmMain.pnlDisplay.Handle, HDCDisplay);
DeleteDC(HDCTemp);

现在,需要把一幅BMP绘制到摄像头画面上去。BMP从Resource中Load,设置了透明色,透明色是clFuchsia,目前我就是不清楚如何实现这种透明绘制,也就是说,最终的画面是背后出现摄像头画面,而前景有一点自己画的东西。我直接用Draw会闪烁,如果用BitBlt来绘制又会覆盖前面绘制的摄像头画面。请大虾给个例子看看,非常感谢!
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvjun 2005-03-18
  • 打赏
  • 举报
回复
可以用一个bitmap,先将摄像头的数据画在上面,然后再将你的图片透明画在上面,再将此bitmap画到panel上吧,
caiso 2005-03-16
  • 打赏
  • 举报
回复
顶一下~!!!!!!!!!!!!!!!!!!!!!!
totem_t 2005-03-15
  • 打赏
  • 举报
回复
我也是同样问题.
在缓冲区绘图后,图片的透明部分依然被绘了出来.

初次调入屏幕时,透明成功.
但后面只要一从缓冲区绘到屏幕上,就不能透明了.
请达人指点.
caiso 2005-03-15
  • 打赏
  • 举报
回复
顶一下~!~
bob008 2005-03-15
  • 打赏
  • 举报
回复
setbkmode(hdc,sm_transparent);
.....

brush,style:=bsclear;
....

zwb666 2004-11-04
  • 打赏
  • 举报
回复
学习
danielfeng 2004-11-03
  • 打赏
  • 举报
回复
也就是说,需要选择性透明绘制,BMP透明的部分不要画到上面,而不透明的要和摄像头画面合并之后再一起画到Panel上。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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