日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

玩轉(zhuǎn)Windows桌面圖標(biāo)

玩轉(zhuǎn)Windows桌面圖標(biāo)

更新時(shí)間:2022-04-29 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

大家一定和我一樣對(duì)Windows的桌面十分不滿(mǎn)意吧。那就拿起手術(shù)刀(Delphi)給它動(dòng)動(dòng)手術(shù)。
首先要對(duì)付的是桌面圖標(biāo)那一個(gè)個(gè)難看的、帶有背景色的文字,不僅看上去別扭,還遮住了漂亮的墻紙,一定要去掉它,把它變成透明。其次就是圖標(biāo)的位置,只會(huì)傻傻地呆在屏幕的左邊,還得我們一個(gè)個(gè)去拖,真累!給它來(lái)點(diǎn)新花樣,Please Follow Me!

1、 新建一工程,在 uses 中加入 CommCtrl 單元,窗體上加一個(gè)按鈕;

2、 聲明一個(gè)取得桌面句柄的函數(shù):

function TForm1.GetDesktopHand: THandle;

begin

Result:=FindWindow('progman',nil);

Result:=GetWindow(Result,GW_Child);

Result:=GetWindow(Result,GW_Child);

end;


3、 聲明一個(gè)設(shè)置圖標(biāo)文字顏色的過(guò)程:

procedure TForm1.SetTextColor(ForeClr, BackClr: TColor);

var Hand: THandle;

begin

Hand:= GetDesktopHand;

Listview_SetTextColor(Hand,ForeClr); // 設(shè)置文字前景色;

Listview_SetTextBkColor(Hand,BackClr); // 設(shè)置文字背景色,crNone 為透明;

Listview_RedrawItems(Hand,0,Listview_GetItemCount(Hand)); // 重畫(huà);

end;



有了上面的兩個(gè)方法,你已經(jīng)可以對(duì)桌面動(dòng)小手術(shù)了。下面介紹圖標(biāo)的排列方式。


4、 以屏幕的中心為圓點(diǎn)作圓形排列:

procedure TForm1.Circle(r: integer); // 形參 r 為半徑;

var

i, Count, CenterX, CenterY, TempR :integer;

Hand: THandle;

Radian: double;

TempRect: TRect;

DesktopHeight,DesktopWidth :integer;

X, Y : Word;

begin

Hand:=GetDesktopHand;

SystemParametersInfo(SPI_GetWorkArea,0,@TempRect,0); // 取得工作區(qū)域;

DesktopWidth:=TempRect.Right - TempRect.Left; // 工作區(qū)的寬(即屏幕的寬);

DesktopHeight:= TempRect.Bottom - TempRect.Top; // 工作區(qū)的高(即屏幕的高);

CenterX:=DesktopWidth div 2; // 取得圓心 X 坐標(biāo);

CenterY:=DesktopHeight div 2; // 圓心 Y 坐標(biāo);

if CenterX>CenterY then

TempR:=CenterY

else

TempR:=CenterX;

if r>TempR then r:=TempR; // 半徑不能超過(guò)屏幕中心點(diǎn)到四邊的最短距離;

Count:=Listview_GetItemCount(Hand); // 桌面上圖標(biāo)個(gè)數(shù);

Radian:=2*3.14159/Count; // 相鄰圖標(biāo)間的弧度; for i:=0 to Count-1 do

begin

// 第一個(gè)圖標(biāo)排在正上方;

X:=Integer(CenterX+Trunc(r*Sin(i*Radian))); // 圖標(biāo)的X坐標(biāo);

Y:=Integer(CenterY+Trunc(r*Cos(i*Radian))); // 圖標(biāo)的Y坐標(biāo);

SendMessage(Hand,LVM_SetItemPosition,i,MakeLparam(X, y)); // 設(shè)置坐標(biāo);

end;

end;



5、 圖標(biāo)右對(duì)齊:

procedure AlignRight(Rec: Integer); // 形參 Rec 為一個(gè)圖標(biāo)所占區(qū)域大小,一般為77;

var Hand: THandle;

h, I, j, DesktopHight, DesktopWidth :integer;

TempRect : TRect;

Begin

Hand:=GetDesktopHand;

SystemParametersInfo(SPI_GetWorkArea,0,@TempRect,0); // 取得工作區(qū)域;

DesktopWidth:=TempRect.Right - TempRect.Left; // 工作區(qū)的寬(即屏幕的寬);

DesktopHeight:= TempRect.Bottom - TempRect.Top; // 工作區(qū)的高(即屏幕的高);

I:=0; // 圖標(biāo)所排的列數(shù)

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 循環(huán)結(jié)束;

End;



6、 在按鈕的單擊事件中加入代碼:

procedure TForm1.Button1Click(Sender: TObject);

begin

SetTextColor(clBlack,crNone); // 設(shè)置圖標(biāo)文字顏色;

Circle(200); // 把圖標(biāo)排列成半徑為200的圓;

// AlignRight(77); // 右對(duì)齊;

end;



編譯運(yùn)行,單擊按鈕。哇塞!太棒了!你還可發(fā)揮你的想象力,對(duì)程序稍加改進(jìn),把圖標(biāo)排成蛇形、橢圓形、環(huán)形等等。以上程序在 Win98+Delphi5下運(yùn)行通過(guò)。 

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 九九热精品免费视频 | 欧美综合图区亚洲综合图区 | 亚洲专区欧美 | 欧美一区精品二区三区 | 中文字幕欧美日韩一 | 有码中文字幕 | 亚洲欧洲日韩国产aa色大片 | 91精彩视频 | 欧美在线网址 | 日产免费线路一区二免11贡区 | 美女被免费网站视频在线 | 翔田千里在线精品视频 | 亚洲精品一区二 | 国产免费69成人精品视频 | 亚洲日韩视频免费观看 | 18禁片一级毛片视频播放免费看 | 婷婷综合| 国产麻豆91网在线看 | cao草棚视频网址成人 | 日韩欧美亚洲国产高清在线 | 中文字幕在线免费视频 | 国产精品日产三级在线观看 | 6969视频 | 国产91九色刺激露脸对白 | 亚洲精品欧美日本中文字幕 | 级毛片久久久毛片精品毛片 | 爱爱免费播放视频在线观看 | 国产1024精品视频专区免费 | 亚洲精品国产专区一区 | 香港三级日本三级妇人三级 | 日本视频网址 | 欧美一级做一级做片性十三 | 中文字幕 亚洲一区 | 久久国产美女免费观看精品 | 久热香蕉视频 | 国产精品日韩欧美 | 最新国产大片 | 全部免费的毛片在线看青青 | 欧美国产亚洲一区二区三区 | 一级国产精品一级国产精品片 | 久久国产影视免费精品 |