Закругленные края в кнопке C # (WinForms)

Это кнопка с закругленными краями

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

protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Rectangle Rect = new Rectangle(0, 0, this.Width, this.Height); GraphicsPath GraphPath = new GraphicsPath(); GraphPath.AddArc(Rect.X, Rect.Y, 50, 50, 180, 90); GraphPath.AddArc(Rect.X + Rect.Width - 50, Rect.Y, 50, 50, 270, 90); GraphPath.AddArc(Rect.X + Rect.Width - 50, Rect.Y + Rect.Height - 50, 50, 50, 0, 90); GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - 50, 50, 50, 90, 90); this.Region = new Region(GraphPath); } 

Проблема, с которой я сталкиваюсь, – это «синяя подсветка» кнопки: она отображается на большинстве кнопок, но она не отображается на закругленных краях, поэтому моя кнопка подсвечена и частично не выделена (по краям). Что я могу сделать, чтобы решить эту проблему? Спасибо.

PS: Я не могу использовать WPF. Приложение предназначено для очень старого компьютера; поэтому, пожалуйста, не предлагайте это. Кроме того, у клиента нет денег, чтобы получить новый компьютер.

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

     class RoundedButton : Button { GraphicsPath GetRoundPath(RectangleF Rect, int radius) { float r2 = radius / 2f; GraphicsPath GraphPath = new GraphicsPath(); GraphPath.AddArc(Rect.X, Rect.Y, radius, radius, 180, 90); GraphPath.AddLine(Rect.X + r2, Rect.Y, Rect.Width - r2, Rect.Y); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y, radius, radius, 270, 90); GraphPath.AddLine(Rect.Width, Rect.Y + r2, Rect.Width, Rect.Height - r2); GraphPath.AddArc(Rect.X + Rect.Width - radius, Rect.Y + Rect.Height - radius, radius, radius, 0, 90); GraphPath.AddLine(Rect.Width - r2, Rect.Height, Rect.X + r2, Rect.Height); GraphPath.AddArc(Rect.X, Rect.Y + Rect.Height - radius, radius, radius, 90, 90); GraphPath.AddLine(Rect.X, Rect.Height - r2, Rect.X, Rect.Y + r2); GraphPath.CloseFigure(); return GraphPath; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); RectangleF Rect = new RectangleF(0, 0, this.Width, this.Height); GraphicsPath GraphPath = GetRoundPath(Rect, 50); this.Region = new Region(GraphPath); using (Pen pen = new Pen(Color.CadetBlue, 1.75f)) { pen.Alignment = PenAlignment.Inset; e.Graphics.DrawPath(pen, GraphPath); } } } 

    Очевидно, что, поскольку у нас есть class, мы можем кэшировать GraphicsPath в переменной classа. И, конечно, вы выбираете цвет ..

    введите описание изображения здесь

    Вы можете использовать WebBrowser, сделать кнопку с HTML и CSS, а затем использовать webbrowser.DocumentText = "your html";

    Если не рисовать, я не думаю, что вы можете что-то сделать. Логика рисования базовой кнопки не написана как «показать синюю подсветку вокруг такой-то части любой области windows». Вместо этого он написан с типом региона, который он ожидает – прямоугольным. Поэтому базовая краска всегда рисует прямоугольное изображение в обрезанной форме. У вас будет более легкое время для таких вещей в WPF.

    Interesting Posts

    Какие формальные языки могут анализировать современные двигатели регулярных выражений?

    Internet Explorer 10 – как применить оттенки серого фильтра?

    Как получить согласованное байтовое представление строк в C # без ручного указания кодировки?

    Как выйти из приложения современного интерфейса?

    отвечать на запрос http с помощью json-объекта в портлете

    Java – удаление первого символа строки

    Как рандомизировать два ArrayLists таким же образом?

    Как использовать HTML5, как использовать контентные поля в представлении формы?

    Как вы выбрасываете cd с помощью клавиатуры на dell inspiron 6000

    Значимые миниатюры для видео с использованием FFmpeg

    Заменить первое вхождение шаблона в строку

    Android Eclipse NoClassDefFoundError для внешних файлов .jar

    Что лучше: DataSet или DataReader?

    Хотите загрузить настольную версию в мой веб-просмотр с помощью uastring

    Как я могу эффективно определить, является ли многоугольник выпуклым, невыпуклым или сложным?

    Давайте будем гением компьютера.