Как закруглить кнопку в wpf
Перейти к содержимому

Как закруглить кнопку в wpf

  • автор:

c#.wpf. Как скруглить углы у textblock’a?

у него и углов-то нет никаких — если, конечно, background не поставить непрозрачный.

а если ставишь — то и гугли как в backround поставить round rectangle
или ты сам текст собираешься обрезать под скругленными углами?

Положи его в элемент Border — рамку.
Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

[WPF] Нужно закруглить углы у кнопки

Author24 — интернет-сервис помощи студентам

Напишите стиль, который заменит прямые углы кнопки на закругленные. Только без лишних украшений, градиентов и тому подобное, т.е. самый простой стиль.

1 2 3
 TargetType="Button" x:Key="EclipceBorder">   >

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Закруглить углы MediaElement
Подскажите плиз как закруглить углы у MediaElement Пробовал через <Border.

Как закруглить углы у RichTextBox?
А точнее один из углов. Заранее спасибо

Закруглить углы динамически созданного TextBox
Создаю по нажатию кнопки, динамически , TextBox и хочу закруглить углы но не совсем получается.

Закруглить углы у MapFragment
Всем привет, собственно вопрос в названии темы. Все что в гугле находил основано на фрейме, в.

1149 / 741 / 483
Регистрация: 21.01.2014
Сообщений: 1,903

Лучший ответ

Сообщение было отмечено Yasha KS как решение

Решение

Yasha KS,

1 2 3 4 5 6 7 8 9 10 11 12 13 14
 TargetType="Button">  Property="Template"> >  TargetType="Button">  CornerRadius="20" Background="">  HorizontalAlignment="" VerticalAlignment=""/> > > > > >

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Закруглить углы многоугольника
помогите закруглить углы правильного многугольника. unit Unit1; interface uses .

Не получается закруглить углы в IE
https://www.cyberforum.ru/html/thread670310.html — у меня вопрос на ту же тему! в ишаке немогу.

Закруглить углы у ImageView
Здравствуйте! Подскажите как проще всего закруглить углы у ImageView?, лучше через xml, можно ли.

Как закруглить углы у ссылки
Здравствуйте. a < display: inline-block; padding: 20px 30px; border: 2px solid red;.

Или воспользуйтесь поиском по форуму:

Как закруглить кнопку в wpf

Регистрация: 08.01.2012

Сообщений: 16

Скругление углов формы, компонент выходит за пределы

Здравствуйте, тока тока начал осваивать WPF, стоит задача закруглить углы формы при чем с возможностью задания градуса каждому углу, сделал код ниже. Но проблема в том что компонент

"CadetBlue" Height="40" Name="Panel" VerticalAlignment="Top" />

Выходит за пределы угла, то есть он не закругляется вместе с формой.
Так же аналогичный компонент находится с низу формы.
Вопрос: Как закруглить форму вместе с компонентами? В независимости от того какой компонент находится в top и buttan.

"http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="382" Width="684" WindowStyle="None" AllowsTransparency="true" Background="Transparent" ResizeMode="CanResizeWithGrip"> "Auto" Height="Auto" Name="windowFrame" BorderBrush="#395984" BorderThickness="1" CornerRadius="0,20,30,40" > "CadetBlue" Height="40" Name="Panel" VerticalAlignment="Top" />   
Stepler415
Посмотреть профиль
Найти ещё сообщения от Stepler415

Как создать/создать кнопки с закругленным углом в WPF?

Мне нужно создать кнопку с закругленным углом в WPF. Кто-нибудь, пожалуйста, может объяснить мне, какие шаги необходимы?

Поделиться Источник 19 июля 2011 в 10:22

18 ответов

Я знаю, что этот пост супер старый, но у меня есть ответ, который, на удивление, отсутствует из вышеперечисленного и также намного проще, чем большинство.

Поскольку стандартный ControlTemplate для управления Button использует элемент Border, добавление стиля для Border в ресурсы Button применяет этот стиль к этому Border. Это позволяет добавлять закругленные углы без необходимости создавать свой собственный ControlTemplate и без какого-либо кода. Он также работает на всех сортах Button (например, ToggleButton и RepeatButton).

Поделиться 07 августа 2019 в 18:59

Вам нужно создать свой собственный шаблон управления для кнопки. Просто посмотрите на пример

создал стиль под названием RoundCorner и внутри него я изменил, вместо этого создал свой собственный новый шаблон управления с Border (CornerRadius=8) для круглого угла и некоторый фон и другой эффект триггера. Если у вас есть или вы знаете Expression Blend, это можно сделать очень легко.

Использование

" Height="25" VerticalAlignment="Top" Content="Show" Width="100" Margin="5" /> 

Поделиться 19 июля 2011 в 11:15

Самое простое решение без изменения стиля по умолчанию:

Затем просто определите свою кнопку так:

Поделиться 21 июня 2020 в 05:19

Это больше минимальный шаблон управления для получения кнопки с закругленными углами, однако у вас не будет визуальных эффектов наведения или нажатия. Но вы можете добавить их в шаблон управления, если нужно. Я работал с темным фоном, поэтому белый фон.

Поделиться 23 сентября 2015 в 05:24

Вы можете попробовать это.

  " Height="" Content="Hi" Background="Red"/> 

Поделиться 07 февраля 2017 в 10:41

Самый простой способ — это

Поделиться 14 июля 2021 в 12:20

Несмотря на то, что прошли годы, мне интересно подумать о другом способе подойти к этому.

Способ воссоздания всего шаблона кнопки — отличный способ, если вы хотите изменить все, но он деморализует для новичка или если вы просто хотите округлить угол кнопки. Правда, вам не нужно все менять, но по крайней мере вы должны будете изменить события.

Способ изменения «граничного» дизайна в button.resources также отличный, если вы новичок, но может быть очень скучно менять все ваши кнопки, если вы хотите увеличить свой дизайн с большим количеством параметров.

Есть решение с ногами в обоих полях:

Поместите этот код в ресурсы окна/страницы:

Затем для кнопок:

Поделиться 25 января 2021 в 14:16

В качестве альтернативы, вы можете закодировать что-то вроде этого:

  " Height=""/> 

Кнопка будет выглядеть примерно так:

How it could looks like

Вы можете установить любой другой контент вместо изображения.

Поделиться 07 июля 2017 в 21:41

Это адаптированная версия ответа @Kishore Kumar, которая проще и более точно соответствует стилю и цветам кнопки по умолчанию. Она также исправляет проблему, что его триггер «IsPressed» находится в неправильном порядке и никогда не будет выполнен, так как «MouseOver» будет иметь прецедент:

Поделиться 29 августа 2018 в 18:35

При первом запуске мне всегда не нравился фрагмент кода без объяснения местоположения. Так что, вот это:

       " HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Padding="10,2"/>  

Поделиться 20 июля 2022 в 17:33

в вашем примере app.xaml добавьте эту часть стиля:

      
 " Margin="50,20,20,20" Click="loginButton_Click" FontSize="20" Width="93" Height="42" /> 

Поделиться 19 февраля 2017 в 09:58

Вы можете использовать вложенные свойства для установки радиуса границы кнопки (тоже самое будет работать и для текстовых ящиков).

Создайте класс для вложенного свойства

public class CornerRadiusSetter < public static CornerRadius GetCornerRadius(DependencyObject obj) =>(CornerRadius)obj.GetValue(CornerRadiusProperty); public static void SetCornerRadius(DependencyObject obj, CornerRadius value) => obj.SetValue(CornerRadiusProperty, value); public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.RegisterAttached(nameof(Border.CornerRadius), typeof(CornerRadius), typeof(CornerRadiusSetter), new UIPropertyMetadata(new CornerRadius(), CornerRadiusChangedCallback)); public static void CornerRadiusChangedCallback(object sender, DependencyPropertyChangedEventArgs e) < Control control = sender as Control; if (control == null) return; control.Loaded -= Control_Loaded; control.Loaded += Control_Loaded; >private static void Control_Loaded(object sender, EventArgs e) < Control control = sender as Control; if (control == null || control.Template == null) return; control.ApplyTemplate(); Border border = control.Template.FindName("border", control) as Border; if (border == null) return; border.CornerRadius = GetCornerRadius(control); >> 

Затем вы можете использовать синтаксис вложенных свойств для нескольких кнопок без дубликатов стиля:

   

Поделиться 21 июня 2018 в 22:57

Лучший способ быстро получить круглые углы и стандартную анимацию — создать копию шаблона управления с помощью Blend. Как только вы получите копию, установите радиус угла на теге Grid, и вы сможете иметь свой контрол с полной функциональностью анимации и применимо к любому элементу управления кнопками. Посмотрите, как выглядит код:

          " /> " /> " />     " /> " /> " />     " /> " /> " />     --> " BorderThickness="" Content="" ContentTransitions="" ContentTemplate="" Padding="" HorizontalContentAlignment="" VerticalContentAlignment="" AutomationProperties.AccessibilityView="Raw"/> -->  

Я также отредактировал VisualState=»PointerOver» специально на Storyboard.TargetName=»BorderBrush»,, потому что его ThemeResource получает квадратные углы при каждом срабатывании PointerOver.

Затем вы должны иметь возможность применить его к вашему стилю управления таким образом:

Таким образом, вы можете применить свои стили к любой кнопке.

Поделиться 20 июля 2017 в 05:27

Хотя этот вопрос давно уже отвечен, я использовал альтернативный подход, который люди могут найти проще, чем любое из этих решений (даже отличный ответ Кита Стейна). Поэтому я размещаю его на случай, если это может кому-то помочь.

Вы можете достичь закругленных углов на кнопке, не писая никаких XAML (кроме стиля, один раз) и не заменяя шаблон или устанавливая/изменяя другие свойства. Просто используйте EventSetter в вашем стиле для события «Загруженная» кнопки и измените его в коде-запятая.

(И если ваш стиль находится в отдельном файле XAML словаря ресурсов, то вы можете поместить код события в файл за кодом-запятая для вашего словаря ресурсов.)

Я делаю это так:

 
public partial class ButtonStyles < private void ButtonLoaded(object sender, RoutedEventArgs e) < if (!(sender is Button b)) return; // Find the first top-level border we can. Border border = default; for (var i = 0; null == border && i < VisualTreeHelper.GetChildrenCount(b); ++i) border = VisualTreeHelper.GetChild(b, i) as Border; // If we found it, set its corner radius how we want. if (border != null) border.CornerRadius = new CornerRadius(3); >> 

Если вам нужно было добавить файл code-behind в существующий файл xaml словаря ресурса, вы можете даже автоматически добавить файл code-behind под этим файлом XAML в Visual Studio Solution, если хотите. В проекте.NET Core просто укажите соответствующее имя (например, если словарь ресурса — «MyDictionary.xaml», назовите файл code-behind «MyDictionary.xaml.cs»). В проекте.NET Framework вам нужно отредактировать файл.csproj в режиме XML

Поделиться 25 января 2020 в 15:32

Я знаю, что это старый вопрос, но если вы хотите создать кнопку на C# вместо xaml, вы можете установить CornerRadius , который округляет вашу кнопку.

Button buttonRouded = new Button < CornerRadius = 10, >; 

Поделиться 15 января 2021 в 19:31

Для тех, кто интересуется, почему их xaml не работает, когда они вносят код с кнопкой округления, проверьте предыдущую строку, чтобы увидеть, заканчивается ли она на /> , и выберите / если это так.

Поделиться 24 сентября 2022 в 02:48

public string[] GetFreeIntervals(TimeSpan[] startTimes, int[] durations, TimeSpan beginWorkingTime, TimeSpan endWorkingTime, int consultationTime) < var busyIntervals = new List<(TimeSpan start, TimeSpan end)>(); for (var i = 0; i < startTimes.Length; i++) < var busyStart = startTimes[i]; var busyEnd = busyStart.Add(new TimeSpan(0, durations[i], 0)); busyIntervals.Add((busyStart, busyEnd)); >var freeIntervals = new List<(TimeSpan start, TimeSpan end)>(); var current = beginWorkingTime; while (current < endWorkingTime) < var busy = false; foreach (var interval in busyIntervals) < if ((current >= interval.start && current < interval.end) || (interval.start >current && interval.start - current < new TimeSpan(0, 30, 0))) < current = interval.end; busy = true; break; >> if (!busy) < var freeEnd = current.Add(new TimeSpan(0, consultationTime, 0)); if (freeEnd current = freeEnd; > > return freeIntervals.Select(interval => $"-").ToArray(); > 

Поделиться 21 марта 2023 в 20:15

Это работает отлично для меня.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *