Как создать кнопку с закругленными углами/краями на Winform С#?

c#
Вопрос:Хорошо, я буду помещать изображение на кнопку, и это изображение имеет закругленные углы. Как это сделать? Я искал поиски в Интернете и искал часы, но мне все равно не повезло. Лучший ответ: Если вы хотите придерживаться форм Windows, тогда вы должны использовать графический ящик и делать анимацию при наведении и т.д. Когда вы нажимаете на

Вопрос:

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

Лучший ответ:

Если вы хотите придерживаться форм Windows, тогда вы должны использовать графический ящик и делать анимацию при наведении и т.д. Когда вы нажимаете на нее, она будет функционировать как кнопка.

Или просмотрите эти статьи:

http://www.codeproject.com/Articles/15730/RoundButton-Windows-Control-Ever-Decreasing-Circle
http://www.codeproject.com/Articles/10303/Elliptical-Circular-Button

Однако вы также можете использовать WPF, если хотите более приятный макет, но он несколько отличается от форм Windows.

Ответ №1

Вы можете использовать форму прямоугольника из Microsoft Visual Basic PowerPacks.

Имеется документация на Как рисовать фигуры с элементами управления OvalShape и RectangleShape

Я проверил, что он работает в проекте форм Windows С# в VS2013 Express для Windows Desktop на Windows7 x64, ориентированном как на x86, так и на x64.

private void rectangleShape1_Click(object sender, EventArgs e) { MessageBox.Show(«Click!»); }

When the program is run

Для удобства вы можете добавить новую вкладку Toolbox и добавить к ней элементы управления VB PP.

Ответ №2

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

1. должен иметь визуальную студию, создать новый проект
2. выберите новую форму окна в качестве нового проекта
3. добавьте 2 x кнопки в форму
4. дважды щелкните в любом месте формы, чтобы открыть окно кода
5. удалите весь код, включая верхние заголовки Form1, и вставьте ниже

Imports System.Drawing.Drawing2D Public Class Form1 Public Sub buttonBorderRadius(ByRef buttonObj As Object, ByVal borderRadiusINT As Integer) Dim p As New Drawing2D.GraphicsPath() p.StartFigure() ‘TOP LEFT CORNER p.AddArc(New Rectangle(0, 0, borderRadiusINT, borderRadiusINT), 180, 90) p.AddLine(40, 0, buttonObj.Width — borderRadiusINT, 0) ‘TOP RIGHT CORNER p.AddArc(New Rectangle(buttonObj.Width — borderRadiusINT, 0, borderRadiusINT, borderRadiusINT), -90, 90) p.AddLine(buttonObj.Width, 40, buttonObj.Width, buttonObj.Height — borderRadiusINT) ‘BOTTOM RIGHT CORNER p.AddArc(New Rectangle(buttonObj.Width — borderRadiusINT, buttonObj.Height — borderRadiusINT, borderRadiusINT, borderRadiusINT), 0, 90) p.AddLine(buttonObj.Width — borderRadiusINT, buttonObj.Height, borderRadiusINT, buttonObj.Height) ‘BOTTOM LEFT CORNER p.AddArc(New Rectangle(0, buttonObj.Height — borderRadiusINT, borderRadiusINT, borderRadiusINT), 90, 90) p.CloseFigure() buttonObj.Region = New Region(p) End Sub Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint buttonBorderRadius(sender, 25) End Sub Private Sub Button2_Paint(sender As Object, e As PaintEventArgs) Handles Button2.Paint buttonBorderRadius(sender, 50) End Sub End Class

вызов функции “buttonBorderRadius (отправитель, 50)” означает, что вы можете установить разные borderRadius для отдельных кнопок.
и поскольку он использует объект, вы можете применить ту же функцию к изображениям и другим элементам управления (не все)

поэтому вы можете установить радиус границы 10 пикселей с помощью “buttonBorderRadius (отправитель, 10)”,
и радиус 50 пикселей, подобный этой “buttonBorderRadius (отправитель, 50)”,
просто измените целое число как 2-й аргумент в функции,
и первый аргумент должен быть переменной объекта

Оцените статью
Добавить комментарий