急问:关于半透明,请大家帮忙!

jackieji 2004-02-17 06:40:17
// 创建内存兼容DC和位图,位图的大小等于lblPreview 的大小
memDC := CreateCompatibleDC(lbBottomPreview.Canvas.Handle);
bmp := CreateCompatibleBitmap(lbBottomPreview.Canvas.Handle, lbBottomPreview.Width,
lbBottomPreview.Height);
oldbmp := SelectObject(memDC,bmp);

Fillchar(lf, sizeof(LOGFONT),0);
// 设置预览字幕的字体大小
Case (g_BottomJuniorProperty.bCharSize) of
1 : lf.lfHeight:= 23;
2 : lf.lfHeight:= 40;
else
lf.lfHeight:= 23;
end;

lf.lfFaceName := '宋体';
font := CreateFontIndirect(lf);
// 设置预览输出的字体和文本颜色
selectobject(memdc,font);
settextcolor(memdc, g_fontcolor[bBottomFontColorIndex]);
rc := Rect(0, 0, lbBottomPreview.Width, lbBottomPreview.Height);

// 设置背景色
//setbkcolor(memdc, g_fontcolor[bBottomBKColorIndex]) ;
SetBkMode(memdc,TRANSPARENT);
lbBottomPreview.Canvas.Brush.Color := $00000000;

// 获得字幕字符串在DC上的宽度和高度(和字体相关)
//GetTextExtentPoint32(memDC, PChar(strPreview), strlen(pchar(strPreview)),m_TitleSize);

// 在内存DC输出字幕
textout(memDC ,intXPos, 0,
pchar(strPreview), strlen(pchar(strPreview)));


//半透明处理
memdc2 := GetDC(Image2.Canvas.Handle);
bitblt(memdc3 ,0, 0, rc.Right, rc.Bottom,
memdc2, 79, 272, SRCCOPY);
tbBmp:=TBitmap.create;
tbOldbmp:=TBitmap.create;
try
tbBmp.width:=rc.Right;
tbBmp.height:=rc.Bottom;
tbBmp.Canvas.handle:=memdc3;
tbOldbmp.Canvas.Handle := GetDC(lbBottomPreview.Canvas.Handle);
//半透明处理
tbOldbmp.PixelFormat := pf24bit;
tbBmp.PixelFormat := pf24bit;
for i:=0 to tbOldbmp.Height - 1 do
begin
p1:=tbOldbmp.ScanLine[i];
p2:=tbBmp.ScanLine[i];
for j:=0 to tbOldbmp.WIdth-1 do
begin
r:=(p1[j*3]+p2[j*3])div 2;
g:=(p1[j*3+1]+p2[j*3+1])div 2;
b:=(p1[j*3+2]+p2[j*3+2])div 2;
p2[j*3]:=r;
p2[j*3+1]:=g;
p2[j*3+2]:=b;
end;
end;
lbBottomPreview.Canvas.Draw(0, 0, tbBmp);
// bmp := tbBmp.Canvas.Handle;
finally
tbBmp.free;
tbOldbmp.Free;
end;

// 将内存DC的内容BitBlt到lbBottomPreview的设备DC上
bitblt(lbBottomPreview.Canvas.Handle ,0, 0, rc.Right, rc.Bottom,
memdc, 0, 0, SRCCOPY);


为什么没有效果呢,我在TImage控件上面,放了一个label控件,想在这个label上实现输出文字,当然是滚动的,而文字的背景,也就是label控件底色是有颜色的,但这个颜色是半透明状态,现在怎么搞都是不透明的,急死了,请帮我看看!!多谢!!!!!
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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