主要目的是在显示照片时,在其底部显示一个块,并将此照片的相关信息写在上面(类似XP屏保中的“图片收藏幻灯片”那样)。由于我的图片显示控件是TPicShow(挺好用,有很多切换特效),本来我有个半透明的Panel控件也挺好用,但是它俩放在一起就是达不到半透明效果,没办法只能在TPicShow的事件在自已画了。
以下是我的Picshow中fterNewFrame事件的代码,目前只能实现显示文本(文本的背景是白色,不爽),怎样将文本的背景设成透明?且在图片的底部画一个半透明的“块”,并将文本写在上面?
procedure TMainForm.PicShowAfterNewFrame(Sender: TObject; Picture,
Screen: TBitmap);
var
Text: String;
begin
if PicShow.Progress <100 then
exit;
Text := '这张照片是我的女友!'
Screen.Canvas.Draw(0, 0, Picture);
Screen.Canvas.Font.Style := [fsBold];
Screen.Canvas.Font.Size := 14 ;
SetTextAlign(Screen.Canvas.Handle, TA_LEFT or TA_BASELINE);
Screen.Canvas.TextOut(10, Screen.Height - 20, Text);
end;请高手们帮忙,谢谢啦!
以下是我的Picshow中fterNewFrame事件的代码,目前只能实现显示文本(文本的背景是白色,不爽),怎样将文本的背景设成透明?且在图片的底部画一个半透明的“块”,并将文本写在上面?
procedure TMainForm.PicShowAfterNewFrame(Sender: TObject; Picture,
Screen: TBitmap);
var
Text: String;
begin
if PicShow.Progress <100 then
exit;
Text := '这张照片是我的女友!'
Screen.Canvas.Draw(0, 0, Picture);
Screen.Canvas.Font.Style := [fsBold];
Screen.Canvas.Font.Size := 14 ;
SetTextAlign(Screen.Canvas.Handle, TA_LEFT or TA_BASELINE);
Screen.Canvas.TextOut(10, Screen.Height - 20, Text);
end;请高手们帮忙,谢谢啦!
解决方案 »
- delphi中串口传输可以实现收到一个字节执行一次中断事件吗?
- 如何将指定文字保存到剪贴板,然后在需要的时候,粘贴出来!
- 网页传递参数调用 ActiveX过程 急
- 我想让我子窗口建立在MDI母窗体的中间!在线等待!!1
- 载操纵word的时候出现:被呼叫方拒绝接受呼叫的提示??
- 在Dehi中如何实现 DateAdd,即当前日期+n天数,得到结果的日期?
- 请教一个菜鸟的问题:字符的ANCII码范围
- 高难问题,大家快来
- MTS/COM
- http://www.csdn.net/develop/read_article.asp?id=3621<浏览器右键快捷菜单>
- MDI子窗口的菜单怎样才能不合并到主窗口啊?
- 100分!如何判断某个目录下是否有子目录
说一种较简单的办法:
需要准备一个BITMAP,假设是bmFr, 全部填充白色,把字写到这个bmFr上,然后把这个bmFr画到Screen.Canvas上:
var
w, h, x, y: S32;
bf: BlendFunction; w := bmFr.Width; h := bmFr.Height; bf.BlendOp := AC_SRC_OVER;
bf.BlendFlags := 0;
bf.SourceConstantAlpha := 50;
bf.AlphaFormat := 0;
AlphaBlend(Screen.Canvas.Handle, 0, 0, w, h,
bmFr.Canvas.Handle, x, y, w, h, bf);