关于AlphaBlend函数的使用

sw0324 2004-09-26 08:39:52
我搜索了论坛以前关于AlphaBlend函数的帖子
未成功过,显示的都是一片黑。
谁有简单的使用例子代码
...全文
205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
toney2002 2004-09-29
  • 打赏
  • 举报
回复
关注...

希望看到 根据 png 图片的 alpha 通道值实现窗体的透明效果的方法
sw0324 2004-09-29
  • 打赏
  • 举报
回复
to pp616(傻小子)
窗口和桌面做混合如何实现
能否给个例子
ccrun.com 2004-09-27
  • 打赏
  • 举报
回复
用 AlphaBlend 实现窗体半透明:
在窗体的构造函数中:

__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
AlphaBlend = true;
AlphaBlendValue = 128; // 自己改这个值
}

不过只适用于Win2k以上系统.
pp616 2004-09-27
  • 打赏
  • 举报
回复
窗口和桌面做混合
pp616 2004-09-26
  • 打赏
  • 举报
回复
/*
写一个例子给你 :)

在窗口上放两个TImage 然后分别装入两个不同的Bmp格式图象:Image1 和 Image2
再放一个TPanel 用于显示AlphaBlend处理后的结果:Panel1 。还有一个TButton:Button1
在工程中加入msimg32.lib
*/

//处理代码如下
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HDC dc,mdc;
HBITMAP m_bmp;
HBRUSH brush;
HGDIOBJ oldbmp;
dc=GetDC(Panel1->Handle);
mdc=CreateCompatibleDC(dc);
m_bmp=CreateCompatibleBitmap(dc,Panel1->Width,Panel1->Height);
oldbmp=SelectObject(mdc,m_bmp);
BLENDFUNCTION m_bf;
m_bf.BlendOp = AC_SRC_OVER;
m_bf.BlendFlags = 0;
m_bf.SourceConstantAlpha =200;
m_bf.AlphaFormat = 0;
brush=CreateSolidBrush(RGB(192,192,192));
FillRect(mdc,&(Panel1->ClientRect),brush);
DeleteObject(brush);
BitBlt(mdc,0,0,Image1->Width,Image1->Height,Image1->Canvas->Handle,0,0,SRCCOPY);
AlphaBlend(mdc,0,0,Image2->Width,Image2->Height,
Image2->Canvas->Handle,0,0,Image2->Width,Image2->Height,
m_bf);
BitBlt(dc,0,0,Panel1->Width,Panel1->Height,mdc,0,0,SRCCOPY);
SelectObject(mdc,oldbmp);
DeleteObject(m_bmp);
DeleteDC(mdc);
ReleaseDC(Panel1->Handle,dc);
}
thp 2004-09-26
  • 打赏
  • 举报
回复
sw0324 2004-09-26
  • 打赏
  • 举报
回复
我想知道如何利用 AlphaBlend 实现窗体半透明(不是用SetLayeredWindowAttributes函数)
COpyFRee 2004-09-26
  • 打赏
  • 举报
回复
你什么系统? AlphaBlend 只能用于 Windows 2000 以上的系统中。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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