2012-06-05 187 views
-2

我創建了幾個按鈕的窗體。現在我希望當光標指向每個按鈕時,按鈕彈出或縮放,並且當光標從該按鈕中移除時,它將以正常尺寸出現。有沒有什麼辦法可以放大c#中的按鈕?

+0

[你有什麼試過嗎?](http://whathaveyoutrid.com) –

+0

我認爲win表單不支持這種圖形效果。試試WPF。 – davioooh

+0

davioooh,它可能不像WPF那樣優雅,但是您可以在Windows窗體中輕鬆完成相同操作。 – Joey

回答

1

您可以通過mouse-enter-event中的代碼更改按鈕大小。並在鼠標離開事件中重置它。

+0

不僅尺寸而且位置(如果你不想從左上方放大)。如果按鈕被錨定或佈局面板中,它可能會變得更復雜。 – Joey

+0

我很困惑。你可以寫代碼嗎? – user1436685

+0

是的,位置也必須改變。 – Tomtom

1

你可以改變鼠標進入和離開事件的按鈕大小或創建兩個圖像一個 是小等大和改變這些事件的形象。

+0

如何?你可以解釋一下嗎? – user1436685

4

可能類似於此:

Button.MouseEnter += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width + 50, Button.Size.Height + 50); } Button.Location = new Point(Button.Location.X - (50/2), Button.Location.Y - (50/2)}); 

Button.MouseLeave += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width - 50, Button.Size.Height - 50 }; Button.Location = new Point(Button.Location.X + (50/2), Button.Location.Y + (50/2)}); 

Button.GotFocus += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width + 50, Button.Size.Height + 50); } Button.Location = new Point(Button.Location.X - (50/2), Button.Location.Y - (50/2)}); 

Button.LostFocus += new EventHandler(delegate(object Sender, EventArgs e) { Button.Size = new Size(Button.Size.Width - 50, Button.Size.Height - 50 }; Button.Location = new Point(Button.Location.X + (50/2), Button.Location.Y + (50/2)}); 

你也迴路設置到「This.controls」事件,並且定義每個按鈕,然後添加此事件。這是腳本,你可以做任何事情=)

+0

這是它應該工作的方式。不過要小心。如果您選擇較大的縮放值,則可能會發生縮放控件與另一個控件疊加的情況。 – Tomtom

0

你將不得不處理MouseEnter/MouseLeave和GotFocus/LostFocus事件來說明鍵盤導航。

這樣的效果在WPF應用程序中更容易。也許你應該考慮創建一個WPF應用程序,如果你需要視覺效果。檢查Scale transform in xaml (in a controltemplate) on a button to perform a "zoom",其中類似的要求通過縮放按鈕來處理,方式可以附加到任何您想要的按鈕,避免編寫代碼。

0

最簡單的方法似乎是使用SetBoundsControl.Scale不能正常工作,因爲它假設您縮放包含所有子控件的完整窗口,因此將始終從視口的左上角(在本例中爲窗口客戶機框架)縮放。

Button b; 

    public Form1() 
    { 
     InitializeComponent(); 

     b = new Button(); 
     b.Text = "Hover me"; 
     b.Top = 100; 
     b.Left = 100; 
     b.Size = new Size(80, 30); 

     this.Controls.Add(b); 

     b.MouseEnter += delegate(object sender, EventArgs e) 
     { 
      b.SetBounds(b.Left - 5, b.Top - 2, b.Width + 10, b.Height + 4); 
     }; 
     b.MouseLeave += delegate(object sender, EventArgs e) 
     { 
      b.SetBounds(b.Left + 5, b.Top + 2, b.Width - 10, b.Height - 4); 
     }; 
    } 
+0

plz舉個例子。 – user1436685

相關問題