Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在c#中缩放按钮?_C#_Button_Resize - Fatal编程技术网

有没有办法在c#中缩放按钮?

有没有办法在c#中缩放按钮?,c#,button,resize,C#,Button,Resize,我用几个按钮创建了windows窗体。现在我希望当光标指向每个按钮时,按钮弹出或缩放,当光标从该按钮上移除时,它将以正常大小出现。您可以在鼠标输入事件中通过代码更改按钮大小。并在鼠标离开事件中重置它。YAU可以更改鼠标进入和离开事件时按钮的大小,或者创建两个图像,一个图像 是小的和其他大的,并更改这些事件的图像。可能与此类似: Button.MouseEnter += new EventHandler(delegate(object Sender, EventArgs e) { Button.S

我用几个按钮创建了windows窗体。现在我希望当光标指向每个按钮时,按钮弹出或缩放,当光标从该按钮上移除时,它将以正常大小出现。

您可以在鼠标输入事件中通过代码更改按钮大小。并在鼠标离开事件中重置它。

YAU可以更改鼠标进入和离开事件时按钮的大小,或者创建两个图像,一个图像
是小的和其他大的,并更改这些事件的图像。

可能与此类似:

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”事件,定义每个按钮,然后添加此事件。这是脚本,您几乎可以做任何事情=)

您必须同时处理MouseEnter/MouseLeave和GotFocus/LostFocus事件才能进行键盘导航


在WPF应用程序中,这样的效果要容易得多。也许你应该考虑创建一个WPF应用程序,如果你需要视觉效果。通过缩放按钮,以一种可以附加到您想要的任何按钮上的方式,检查类似需求在何处得到处理,避免编写代码。

最简单的方法似乎是使用
SetBounds
Control.Scale
不起作用,因为它假定您缩放一个包含所有子控件的完整窗口,因此将始终从视口的左上角(在本例中为窗口客户端框架)进行缩放


我认为win form不支持这种图形效果。试试WPF.daviooo哦,它可能没有WPF中的优雅,但在Windows窗体中也可以轻松做到。@Joey我不是WPF方面的专家,但我知道它有一些类似这样的图形效果功能。。。WinForm是非常“基本”的,所以您可以使用变通方法来获得缩放效果。。。我错了吗?不仅是尺寸,还有位置(如果你不想从左上角放大)。如果按钮被锚定或位于布局面板中,可能会变得更复杂。如果将宽度增加20,则必须将控件的x位置更改为当前值-10。同样的,你必须做的高度和y-位置看看我下面的帖子。我用一些代码给出了一个例子。怎么做?你能解释一下吗?这是它应该工作的方式。但是要小心。如果选择较大的缩放值,则缩放的控件可能与另一个控件重叠。
    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);
        };
    }