Re: [問題] 想請問Windows Form的圓邊表單如何做?

看板C_Sharp (C#)作者 (Op穎)時間20年前 (2005/06/10 22:45), 編輯推噓2(203)
留言5則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《jiing24 (jiing)》之銘言: : 1. 以前好像有看過BCB有round edge屬性不過現在C#好像沒有 : 想請教要如何做呢?或是有什麼好書或參考資料 .NET 1.1下有兩種方法第一種比較簡單 1.先預備好一張圖形檔案當作Form的底圖,然後將底圖設為Form的BackgroundImage (可以直接在Visual Studio 2003 IDE中Form的properties指定) 2.設定Form的 FormBorderStyle = FormBorderStyle.None; 3.接下來設定Form的TransparencyKey=BackColor即可。 另一種比較正統也是Win32下常用的方式,下面提供範例程式 1.記的先將Form的 FormBorderStyle = FormBorderStyle.None; class MyForm:Form { private void setRegion() { //這個範例是設定一個圓形的Form Rectangle rect = this.ClientRectangle; using( GraphicsPath path = new GraphicsPath()) { path.AddEllipse(rect); this.Region = new Region.path; } } //處理Load事件 void MyForm_Load(.....) { setRegion(); } //處理SizeChanged事件 void MyForm_SizeChange(.....) { setRegion(); } } 然後記住這些不規則的Form必須要從新實作出原本Drag caption的移動視窗效果 最簡單是處理MouseDown, MouseMove,MouseUp三個事件 在Form的class中加上一個private member Point prePoint=Point.Empty; //處理MouseDown Event void MyForm_MouseDown(object sender, MouseEventArg e) { //只有滑鼠左鍵讓他可以移動Window if(e.Button != MouseButtons.Left) return; prePoint = new Point(e.X, e.Y); } //處理MouseMove Event void MyForm_MouseMove(object sender, MouseEventArg e) { if(prePoint = Point.Empty) return; Point position = new Point(this.Left + e.X -prePoint.X, this.Top + e.Y - prePoint.Y); //設定Window新的位置 this.Location = position; } //處理MouseUp Event void MyForm_MouseUp(object sender, MouseEventArg e) { if(e.Button != MouseButtons.Left) return; prePoint = Point.Empty } : 2. 另外想問圓形的按鈕要如何做? : 謝謝! C#中要做自定元件已經非常簡單建議自己試試看 可以參考這幾個Event Paint MouseDown MousUp MouseHover Click 如果還是沒有概念可以參考 http://www.codeproject.com/cs/miscctrl/zhaocolorbutton.asp 針對上面幾個Event做重點研究應該就懂了。 -- 我的Blog :) http://spaces.msn.com/members/austinjan/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.23.6

59.120.12.63 06/25, , 1F
感恩
59.120.12.63 06/25, 1F

61.66.134.155 06/28, , 2F
法一在.NET Framework下會有問題
61.66.134.155 06/28, 2F

61.66.134.155 06/28, , 3F
螢幕色彩為高彩16bit的時候,才會真的把設定的顏
61.66.134.155 06/28, 3F

61.66.134.155 06/28, , 4F
色透明,在螢幕色彩為 全彩32bit的時候卻沒有透
61.66.134.155 06/28, 4F

61.66.134.155 06/28, , 5F
明的效果
61.66.134.155 06/28, 5F
文章代碼(AID): #12gQU4nC (C_Sharp)
文章代碼(AID): #12gQU4nC (C_Sharp)