Как сделать круглые кнопки c wpf
Интересует вопрос, можно ли сделать в C# кнопку любой формы, круглую например или ромбом. Что б не просто картинка, на которую нажимаешь, а именно кнопка, со всеми ее свойствами и прочее.
Пользователь
Регистрация: 28.03.2011
Сообщений: 51
в wpf/сервелат это очень легко делается, можеш посмотреть ролики на ютубе
| Neolit1819 |
| Посмотреть профиль |
| Найти ещё сообщения от Neolit1819 |
Пользователь
Регистрация: 15.08.2011
Сообщений: 11
ссылку или что вводить в поиске не подскажите?
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
Если тема еще актуальна, то делается это с помощью отдельной от Visual Studio программы — Microsoft Expression Studio, например Ultimate 4(MS Expression Studio Ultimate 4 Trial). Данное приложение является немного мутноватым и поэтому лично у меня не получилось с ним разобраться «с лёта». Хотел создать красивую круглую кнопку для своего приложения и для получения опыта в работе с Expression Studio и поэтому начал лазить по сети и нашел ЗДЕСЬ на YouTube’е, как создать красивую кнопку. Комментарии, к сожалению, на корейском, но все подробно показывается и демонстрируется, правда под Silverlight. Однако волноваться не стоит, т.к. создание визуальных компонентов под Silverlight и WPF абсолютно аналогично.
Из всех классических книг, посвященных программированию, ненавижу всего одну — русский перевод книги Роберта Седжвика-«Фундаментальные алгоритмы C++». Предпочитаю читать её в оригинале.
Пользователь
Регистрация: 15.08.2011
Сообщений: 11
Спасибо, я уже сам разобрался. Использую Expression blend 4. Все просто и красиво. Он пишет как на XAML так и на С#. Открываю в Visual Studio проект и описываю действия для каждой кнопки интерфейса.
Кнопка произвольной формы
С помощью свойства Region можно сделать кнопку любой формы. У нас нет необходимости создавать элементы управления, мы можем испольовать уже готовые. Давайте создадим метод, который будет делать кнопку овальной формы.
Поместим на нашу форму обычную кнопку (рис. 1)
Рис. 1 Добавление кнопки Теперь перейдем в редактор кода и создадим метод, который будет преобразовывать форму нашей кнопки в овальную:
//добавляем необходимое простанство имен: using System.Drawing.Drawing2D;
void OvalForm(Button btn) < GraphicsPath gp = new GraphicsPath(); Graphics g = CreateGraphics(); //Создаем новый прямоуголник с размерами кнопки Rectangle rect = btn.ClientRectangle; //уменьшаем размеры прямоуголника rect.Inflate(-3, -3); //создаем эллипс gp.AddEllipse(rect); btn.Region = new Region(gp); //рисуем рамку для овальной кнопки g.DrawEllipse(new Pen(Color.Black, 2), btn.Left + 1, btn.Top + 1, btn.Width - 3, btn.Height - 3); //высвобождаем память g.Dispose(); >
Теперь создадим обработчик события для кнопки и поместим в него кледующий код:
private void button1_Click(object sender, EventArgs e)

При нажатии на кнопку её форма меняется (рис. 2)
Рис. 2 Новая форма кнопки
- February 2014 (1)
- January 2014 (1)
- March 2013 (2)
- February 2013 (2)
- November 2012 (1)
- October 2012 (2)
- July 2012 (3)
- May 2012 (2)
- January 2012 (4)
- December 2011 (3)
- November 2011 (14)
- October 2011 (1)
Как сделать круглые кнопки c wpf
Для практики с шаблонами переопределим шаблон окна, чтобы оно имело нестандартную непрямоугольную форму:
" FontWeight="Bold" HorizontalAlignment="Center" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown"/>
Важно здесь отметить установку трех свойств элемента Window:
- AllowsTransparency : позволяет сделать форму прозрачной, невидимой
- WindowStyle : позволяет убрать у окна стиль при установке значения «None»
- Background : устанавливает прозрачнй фон с помощью значения Transparent
И также в файле кода c# изменим код окна, определив необходимые обработчики событий:
public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); >private void closeButton_Click(object sender, RoutedEventArgs e) < this.Close(); >//Служит для перемещения окна за заголовок формы private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) < this.DragMove(); >>
Как скруглить углы у элемента WPF?
Возник вопрос, как закруглять углы элементов? Кнопок, Gryd`ов и т.д.
В целом, весьма распространённая задача, но без поллитра не разобраться.
К слову, насколько хорошая практика, пилить интерфейсы в Blend?
- Вопрос задан более трёх лет назад
- 26099 просмотров
Комментировать
Решения вопроса 1

программист
Наиболее оптимальный способ — вручную прорисовывать шаблон элемента. Той же кнопки, к примеру.
Первая попавшаяся ссылка с вменяемым по размеру примером:
https://professorweb.ru/my/WPF/Template/level17/17.
Общая суть:
Нужно указать параметр Template у объекта, углы которого скруглять вздумали.
Это можно сделать как в примере на странице через ссылку на StaticResource, либо по месту, указав
Сам шаблон описывается элементом . Ну или не Button, а тот элемент, который вы хотите выдать.
Внутри вы можете нарисовать кнопку так, как вам того хочется. Можно , можно — на ваше усмотрение. Не забываете добавить , чтобы отобразить содержимое кнопки (её текст или любые другие элементы, которые на ней должны размещаться). В реальности вам придётся ещё впоследствии добавить раскраску в зависимости от состояния (активная, курсор наведён, курсор не наведён), и возможно анимацию перехода между этими состояниями!
Чтобы не делать это всё с нуля, часто бывает удобно скопировать стиль по-умолчанию с сайта майкрософт , а потом перкроить его на свой вкус.
Blend так ни разу и не довелось использовать. Всё-таки мне показалось более удобным работать с чистым кодом. Вся идея бленда заключалась на мой взгляд в том, чтобы посадить за него дизайнера, и чтобы последний выдавал на нём готовые для использования блоки. Программеру он ни к чему.
