2011-12-20 73 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