BCB代码转VC的一个菜鸟问题

tomlance 2010-07-23 04:02:35
最近把一个1w多行的BCB工程转到WinCE,用VS2005开发。实现TBitmap的过程中遇到一个问题,以前只要Bitmap->Transparent = true, 设置一下Bitmap->TransparentColor就可以了。可是在VC下面还要设置设备上下文CDC,使用API函数TransparentBlt却没有效果,什么也没显示,到底是什么RPWT?代码如下:

void TCanvas::Draw(int x, int y, TBitmap *bitmap)
{
::EnterCriticalSection(&cs);

if( bitmap->Transparent)//透明模式
{
::TransparentBlt(dc->GetSafeHdc(),x,y,bitmap->Width,bitmap->Height,bitmap->dc,0,0,bitmap->Width,bitmap->Height,SRCCOPY,bitmap->TransparentColor);
}
else//普通模式
{
dc->StretchBlt(x,y,bitmap->Width,bitmap->Height,bitmap->dc,0,0,bitmap->Width,bitmap->Height,SRCCOPY);
}
if( dc_mode == 0 )
{
real_dlg->Invalidate();
}
::LeaveCriticalSection(&cs);
}

结果什么也没显示,求大牛指点
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2010-07-23
  • 打赏
  • 举报
回复
该函数原型:
BOOL TransparentBlt(
__in HDC hdcDest,
__in int xoriginDest,
__in int yoriginDest,
__in int wDest,
__in int hDest,
__in HDC hdcSrc,
__in int xoriginSrc,
__in int yoriginSrc,
__in int wSrc,
__in int hSrc,
__in UINT crTransparent
);


在C++Builder中的例子代码:
::TransparentBlt(Canvas->Handle, 200, 200, Image1->Width, Image1->Height,
Image1->Picture->Bitmap->Canvas->Handle, 0, 0, Image1->Width, Image1->Height, clFuchsia);
ccrun.com 2010-07-23
  • 打赏
  • 举报
回复
TransparentBlt只有11个参数咯,牛良怎么整出12个参数来?编译没有报错?

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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