Я создал окна с несколькими кнопками. Теперь я хочу, чтобы, когда курсор указывает на каждую кнопку, кнопка выскочит или увеличит масштаб, и когда курсор удаляется с этой кнопки, он будет иметь нормальный размер.Есть ли способ масштабирования кнопок в C#?
ответ
Вы можете изменить размер кнопки по коду в событии mouse-enter-event. и сбросьте его в событии mouse-leave-event.
Не только размер, но и позиция (если вы не хотите увеличивать изображение в верхнем левом углу). Если кнопка закреплена или на панели макета становится сложнее, может быть. – Joey
Я смущен. Не могли бы вы написать код. – user1436685
Да, местоположение также необходимо изменить. – Tomtom
ya u можете изменить размер кнопки при вводе и удалении мыши или создать два изображения один является небольшим и другим большим и изменить изображение на эти события.
Как? Не могли бы вы объяснить это? – user1436685
могли бы выглядеть примерно так:
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» событие, и определить каждую кнопку, а затем добавить это событие. Это скриптинг, вы можете сделать почти что угодно =)
Так оно и должно работать. Но будь осторожен. Если вы выберете большие значения для масштабирования, тогда может случиться, что ваш зум-контроль накладывается на другой. – Tomtom
Вам придется обрабатывать события MouseEnter/MouseLeave и GotFocus/LostFocus для учета навигации по клавиатуре.
Эффекты, подобные этому, намного проще в приложениях WPF. Возможно, вам стоит подумать о создании WPF-приложения, если вам нужны визуальные эффекты. Проверьте Scale transform in xaml (in a controltemplate) on a button to perform a "zoom", где аналогичное требование обрабатывается путем масштабирования кнопки, таким образом, что вы можете прикреплять ее к любой кнопке, избегая писать код.
Самый простой способ заключается в использовании SetBounds
. Control.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);
};
}
PLZ привести пример. – user1436685
[что вы пробовали?] (Http://whathaveyoutrid.com) –
Я думаю, что форма выигрыша не поддерживает такие графические эффекты. Попробуйте WPF. – davioooh
davioooh, это может быть не так элегантно, как в WPF, но вы можете легко сделать то же самое в Windows Forms. – Joey