2011-12-20 36 views
-1

我正在寻找一种方法在使用delphi的windows桌面图标下绘制bmp /文本。在图标下方绘制

任何想法?

+3

替换背景图片? – 2011-12-20 07:59:49

+0

不改变壁纸我正在寻找一个动态的方式女巫会让我改变它非常快 – opc0de 2011-12-20 08:03:17

+0

这听起来像昨天你问的同一个问题。你想要画什么? – 2011-12-20 08:13:38

回答

0

您需要使用桌面画布。诀窍在于,首先,onFormCreate,您在delphi TCanvas中捕获桌面画布句柄。

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    FDesktopCanvas := TCanvas.Create; 
    FDesktopCanvas.Handle := GetWindowDC(0); 
end; 

后来销毁onFormDestroy。

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
    FDesktopCanvas.Free; 
end; 

在代码中,你只需要使用FDesktopCanvas作为一个普通的画布,每次你需要画的时间...

FDesktopCanvas.pen.Color := clWhite; 
FDesktopCanvas.pen.Width := 5; 
FDesktopCanvas.moveto(Screen.Width, 2); 
FDesktopCanvas.lineto(2, 2); 

...

var aBitmap: TBitmap; 
.... 
aBitmap := TBitmap.Create; 
try 
    aBitmap.LoadFromFile('logo100px.bmp'); 
    FDesktopCanvas.draw(Screen.Width-200, 100, aBitmap); 
finally 
    aBitmap.Free; 
end; 

...

FDesktopCanvas.Font.Name := 'Segoe'; 
FDesktopCanvas.Font.Size := 36; 
FDesktopCanvas.Font.Color := clWhite; 
FDesktopCanvas.Brush.Style := bsclear; 
FDesktopCanvas.textout(Screen.Width-200, Screen.Height-100,FormatDateTime('hh:nn:ss',now)); 
+0

中的“自定义桌面”对其进行测试,该属性也将在桌面图标上绘制。 – opc0de 2011-12-20 08:15:54

+0

ooops您是对的。一种可能的方法是在绘制之前将图标隐藏。但那肯定会产生恼人的闪烁效果。让我想想如果我找到另一种解决方案。 – 2011-12-20 08:23:47