玩轉Windows桌面圖示 (轉)
玩轉桌面圖示:namespace prefix = o ns = "urn:schemas--com::office" />
大家一定和我一樣對Windows的桌面十分不滿意吧。那就拿起手術刀()給它動動手術。
首先要對付的是桌面圖示那一個個難看的、帶有背景色的文字,不僅看上去彆扭,還遮住了漂亮的牆紙,一定要去掉它,把它變成透明。其次就是圖示的位置,只會傻傻地呆在螢幕的左邊,還得我們一個個去拖,真累!給它來點新花樣,Please Follow Me!
1、 新建一工程,在 uses 中加入 CommCtrl 單元,窗體上加一個按鈕;
2、 宣告一個取得桌面控制程式碼的:
function TForm1.GetDesktopHand: THandle;
begin
Result:=FindWindow('progman',nil);
Result:=GetWindow(Result,GW_Child);
Result:=GetWindow(Result,GW_Child);
end;
3、 宣告一個設定圖示文字顏色的過程:
procedure TForm1.SetTextColor(ForeClr, BackClr: TColor);
var Hand: THandle;
begin
Hand:= GetDesktopHand;
Listview_SetTextColor(Hand,ForeClr); // 設定文字前景色;
Listview_SetTextBkColor(Hand,BackClr); // 設定文字背景色,crNone 為透明;
Listview_RedrawItems(Hand,0,Listview_GetItemCount(Hand)); // 重畫;
end;
有了上面的兩個方法,你已經可以對桌面動小手術了。下面介紹圖示的排列方式。
4、 以螢幕的中心為圓點作圓形排列:
procedure TForm1.Circle(r: integer); // 形參 r 為半徑;
var
i, Count, CenterX, CenterY, TempR :integer;
Hand: THandle;
Radian: double;
TempRect: TRect;
DesktopHeight,DesktopWidth :integer;
X, Y : ;
begin
Hand:=GetDesktopHand;
SystemParametersInfo(SPI_GetWorkArea,0,@TempRect,0); // 取得工作區域;
DesktopWidth:=TempRect.Right - TempRect.Left; // 工作區的寬(即螢幕的寬);
DesktopHeight:= TempRect.Bottom - TempRect.Top; // 工作區的高(即螢幕的高);
CenterX:=DesktopWidth div 2; // 取得圓心 X 座標;
CenterY:=DesktopHeight div 2; // 圓心 Y 座標;
if CenterX>CenterY then
TempR:=CenterY
else
TempR:=CenterX;
if r>TempR then r:=TempR; // 半徑不能超過螢幕中心點到四邊的最短距離;
Count:=Listview_GetItemCount(Hand); // 桌面上圖示個數;
Radian:=2*3.14159/Count; // 相鄰圖示間的弧度;
for i:=0 to Count-1 do
begin
// 第一個圖示排在正上方;
X:=Integer(CenterX+Trunc(r*Sin(i*Radian))); // 圖示的X座標;
Y:=Integer(CenterY+Trunc(r*Cos(i*Radian))); // 圖示的Y座標;
SendMessage(Hand,LVM_SetItemPosition,i,MakeLparam(X, y)); // 設定座標;
end;
end;
5、 圖示右對齊:
procedure AlignRight(Rec: Integer); // 形參 Rec 為一個圖示所佔區域大小,一般為77;
var Hand: THandle;
h, I, j, DesktopHight, DesktopWidth :integer;
TempRect : TRect;
Begin
Hand:=GetDesktopHand;
SystemParametersInfo(SPI_GetWorkArea,0,@TempRect,0); // 取得工作區域;
DesktopWidth:=TempRect.Right - TempRect.Left; // 工作區的寬(即螢幕的寬);
DesktopHeight:= TempRect.Bottom - TempRect.Top; // 工作區的高(即螢幕的高);
I:=0; // 圖示所排的列數
J:=0;
For h:=0 to Listview_GetItemCount(Hand)-1 do
Begin
Inc(j);
If j*rec>DesktopHeight then // 排完一列;
Begin
Inc(i); // 換列
J:=1;
End;
SendMessage(Hand,LVM_SetItemPosition,h,
MakeLparam(DesktopWidth-Rec*(I+1),Rec*(j-1));
End; // for 迴圈結束;
End;
6、 在按鈕的單擊事件中加入程式碼:
procedure TForm1.Button1Click(Sender: T);
begin
SetTextColor(clBlack,crNone); // 設定圖示文字顏色;
Circle(200); // 把圖示排列成半徑為200的圓;
// AlignRight(77); // 右對齊;
end;
編譯執行,單擊按鈕。哇塞!太棒了!你還可發揮你的想象力,對稍加改進,把圖示排成蛇形、橢圓形、環形等等。以上程式在 +Delphi5下執行透過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-998617/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows XP 輕鬆恢復“顯示桌面”按鈕(轉)Windows
- windows10 桌面圖示在哪裡_win10如何設定桌面圖示WindowsWin10
- Windows 的桌面圖示沒有顯示正確Windows
- win10如何設定桌面顯示圖示_windows10顯示桌面圖示設定方法Win10Windows
- 徹底玩轉你的Windows Update(轉)Windows
- 在桌面上建立螢幕保護程式圖示(轉)
- 完全控制你的Windows桌面 (轉)Windows
- Windows XP 清除工作列隱藏圖示記錄(轉)Windows
- 如何從Windows桌面刪除未使用的圖示Windows
- 《WTL起步 - 玩轉圖形介面》目錄 (轉)
- 在Windows中玩轉Docker ToolboxWindowsDocker
- windows10桌面圖示距離很大怎麼調_win10桌面圖示大小的設定方法WindowsWin10
- 【看圖學R】玩轉Vector
- 如何玩轉明星代言——資訊圖
- 在工作列上顯示圖示 (轉)
- Windows10系統桌面圖片怎麼顯示為縮圖Windows
- windows10電腦桌面圖示消失如何恢復_win10桌面圖示不見了的修復方法WindowsWin10
- 用BCB在windows桌面建立快捷方式 (轉)Windows
- 字幕圖示控制元件 (轉)控制元件
- 雨滴式的顯示圖片 (cloud 轉貼) (轉)Cloud
- windows10系統下怎麼將桌面圖示變小Windows
- Windows10系統鎖定/固定桌面圖示位置的方法Windows
- 如何修復windows桌面資料夾變黑圖示問題Windows
- Windows8誤刪開始螢幕桌面圖示如何找回Windows
- windows10圖示不顯示怎麼設定_win10圖示不顯示在桌面如何解決WindowsWin10
- 將HTML文件設定為Windows桌面背景(轉)HTMLWindows
- Windows 98 桌面主題和使用者管理(轉)Windows
- Novell釋出新版桌面Linux 期望超越Windows(轉)LinuxWindows
- Windows Server 2012 在桌面上顯示”我的電腦”圖示WindowsServer
- 一起玩轉玩轉LiteOS元件:TinyFrame元件
- windows10桌面圖示有一半遮住怎麼辦_win10桌面圖示一半被遮住如何設定WindowsWin10
- 玩轉SSH埠轉發
- 玩轉“江南百景圖”,到底圖個啥?
- 玩轉redisRedis
- 玩轉 pyocd
- 玩轉「Canvas」Canvas
- 玩轉macMac
- 玩轉TCPTCP