熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用C#.net輕松制作不規則窗體

2013-11-13 10:06:34  來源: .NET編程 

  以前作不規則窗體涉及到API的調用和大量的編程不是誰都能作的很多程序員都望而卻步

    現在我們可以使用輕松的創建不規則窗體下面我就用一個簡單的例子來講述其制作過程

  繪制不規則窗體位圖
    設置窗體基本屬性
    編寫窗體相關代碼  (要實現窗口的關閉移動等操作)  
 
    繪制不規則窗體位圖

        可以使用任意一種你喜歡的作圖工具制作一個有形狀的位圖背景使用一種其他的顏色這個顏色在編程中用得著所以最好使用一種容易記憶的顏色
如圖下圖本例中使用的背景色為黃色(#ffff/yellow)文件名為bkbmp

   

  創建windows窗體並設置窗體基本屬性

        >新建windows應用程序

  

  >選中新建的窗體設置其相應屬性

                (將 FormBorderStyle 屬性設置為 None

                (將窗體的 BackgroundImage 屬性設置為先前創建的位圖文件不必將文件添加到項目系統中這將在指定該文件作為背景圖像時自動完成

                (將 TransparencyKey 屬性設置為位圖文件的背景色本例中為黃色(此屬性告訴應用程序窗體中的哪些部分需要設置為透明

         這時你就可以按F測試你的程序可以看到如圖所示的窗體現在窗體還不能拖動只能通過結束程序或者alt+F關閉下面我們編寫相應的代碼來實現標題欄的相應功能

  

  編寫窗體相關代碼

        (要實現窗口的關閉移動等操作)
        
        (實現窗口關閉

                從工具欄中拖進一個按鈕設置其按鈕文字為×設置其大小為合適大小雙擊該按鈕進入其觸發時間函數
                寫入如下代碼
                       
                thisClose();        //關閉本窗體

  (設置窗體的移動操作我們要用到兩個全局的變量
                private Point mouseOffset;        //記錄鼠標指針的坐標
                private bool isMouseDown = false; //記錄鼠標按鍵是否按下

  創建該窗體 MouseDown事件的相應處理程序
                private void Form_MouseDown(object sender SystemWindowsFormsMouseEventArgs e)
                {
                        int xOffset;
                        int yOffset;

  if (eButton == MouseButtonsLeft)
                        {
                                xOffset = eX SystemInformationFrameBorderSizeWidth;
                                yOffset = eY SystemInformationCaptionHeight
                                        SystemInformationFrameBorderSizeHeight;
                                mouseOffset = new Point(xOffset yOffset);
                                isMouseDown = true;
                        }
                }

  創建該窗體的 MouseMove事件的相應處理程序
                private void Form_MouseMove(object sender SystemWindowsFormsMouseEventArgs e)
                {
                        if (isMouseDown)
                        {
                                Point mousePos = ControlMousePosition;
                                mousePosOffset(mouseOffsetX mouseOffsetY);
                                Location = mousePos;
                        }
                }
               
                創建該窗體的MouseUp事件的相應處理程序
                private void Form_MouseUp(object sender SystemWindowsFormsMouseEventArgs e)
                {
                        // 修改鼠標狀態isMouseDown的值
                        // 確保只有鼠標左鍵按下並移動時才移動窗體
                        if (eButton == MouseButtonsLeft)
                        {
                                isMouseDown = false;
                        }
                }

  (加入相應的其他的控件

                   其他的就是看你自己的需要來添加控件實現自己想要實現的功能

                   本例中添加了一文本框設置其背景為黃色所以顯示時也成了透明的
       
         現在我們就可以生成程序看一下最後的效果了

  

  注意如果監視器的顏色深度設置大於 則不管 TransparencyKey 屬性是如何設置的窗體的非透明部分都會產生顯示問題若要避免出現這種問題請確保顯示控制面板中的監視器顏色深度的設置小於 當開發具有這種透明功能的應用程序時請牢記應使您的用戶意識到此問題


From:http://tw.wingwit.com/Article/program/net/201311/12584.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.