国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

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

2019-11-18 18:55:07
字體:
供稿:網(wǎng)友

大家一定和我一樣對Windows的桌面十分不滿意吧。那就拿起手術(shù)刀(Delphi)給它動動手術(shù)。

首先要對付的是桌面圖標那一個個難看的、帶有背景色的文字,不僅看上去別扭,還遮住了漂亮的墻紙,一定要去掉它,把它變成透明。其次就是圖標的位置,只會傻傻地呆在屏幕的左邊,還得我們一個個去拖,真累!給它來點新花樣,Please  Follow  Me

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

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

function TForm1.GetDesktopHand: THandle;

begin

  Result:=FindWindow('

  Result:=GetWindow(Result,GW_Child);

  Result:=GetWindow(Result,GW_Child);

end;

3、  聲明一個設(shè)置圖標文字顏色的過程:

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));  //  重畫;

end;

 

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

 

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 : 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 坐標;

  CenterY:=DesktopHeight div 2; // 圓心 Y 坐標;

  if CenterX>CenterY then

    TempR:=CenterY

  else

    TempR:=CenterX; 

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

  Count:=Listview_GetItemCount(Hand);  // 桌面上圖標個數(shù);

  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));  // 設(shè)置坐標;

    end;

end;

 

5、  圖標右對齊:

procedure AlignRight(Rec: Integer); // 形參 Rec 為一個圖標所占區(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;  // 圖標所排的列數(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è)置圖標文字顏色;

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

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

end;

 

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


上一篇:改進的socket控件

下一篇:從Internet時間服務(wù)器獲取標準格林尼治時間

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 光山县| 亚东县| 龙井市| 九龙坡区| 罗城| 霍州市| 宁武县| 广州市| 积石山| 雅江县| 鹤庆县| 台州市| 玉溪市| 泽普县| 新竹县| 朝阳县| 玉屏| 德江县| 安陆市| 永丰县| 兴化市| 汤原县| 固阳县| 囊谦县| 彭山县| 枣强县| 丹江口市| 峨边| 郓城县| 巴青县| 昭苏县| 敦化市| 徐汇区| 临沭县| 砀山县| 莱州市| 石景山区| 宽城| 肥乡县| 龙川县| 宝坻区|