Вы должны войти, чтобы создавать сообщения и темы.

Как закруглить края у формы

Здравствуйте. Подскажите пожалуйста как можно закруглить края у формы ?

Добрый день. 
Это в каком-то видео у Хачатура было, возможно только для подписчиков на boosty, не помню.

Спасибо, поищу. Видимо мне заново придется пересматривать все ролики, ибо начинал смотреть пару месяцев назад и сейчас застрял на первых же строчках. Я хотел написать свой инсталятор для Windows с кучей функций и своим интерфейсом, в голове все хорошо и алгоритм простой, а на практике фиг)Даже проверку boot.wim в папке с программой написать не смог. Ладно, пойду уроки Хачатура по программированию смотреть)

Егор, привет
Если ещё не нашёл, то вот тут посмотри.
Так же куски кода можно взять тут.

Огромное спасибо

Цитата: Aleksey от 22.10.2024, 15:41

Егор, привет
Если ещё не нашёл, то вот тут посмотри.
Так же куски кода можно взять тут.

Скопировано

using System.Runtime.InteropServices;
using System.Drawing;
using System.Windows.Forms;

public partial class RoundForm : Form
{
    [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
    private static extern IntPtr CreateRoundRectRgn(
        int left, 
        int top, 
        int right, 
        int bottom, 
        int width, 
        int height
    );

    // Конструктор формы
    public RoundForm()
    {
        InitializeComponent();
        ApplyRoundCorners();
        
        // Для корректного обновления при изменении размера
        this.Resize += (sender, e) => ApplyRoundCorners();
        
        // Устраняем мерцание
        this.DoubleBuffered = true;
        SetStyle(ControlStyles.ResizeRedraw, true);
    }

    private void ApplyRoundCorners()
    {
        int radius = 20; // Радиус закругления
        IntPtr regionPtr = CreateRoundRectRgn(0, 0, Width, Height, radius, radius);
        Region = Region.FromHrgn(regionPtr);
    }
}

Скопировано

 

Скопированоusing System.Runtime.InteropServices;
using System.Drawing;
using System.Windows.Forms;

public partial class RoundForm : Form
{
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn(
int left,
int top,
int right,
int bottom,
int width,
int height
);

// Конструктор формы
public RoundForm()
{
InitializeComponent();
ApplyRoundCorners();

// Для корректного обновления при изменении размера
this.Resize += (sender, e) => ApplyRoundCorners();

// Устраняем мерцание
this.DoubleBuffered = true;
SetStyle(ControlStyles.ResizeRedraw, true);
}

private void ApplyRoundCorners()
{
int radius = 20; // Радиус закругления
IntPtr regionPtr = CreateRoundRectRgn(0, 0, Width, Height, radius, radius);
Region = Region.FromHrgn(regionPtr);
}
}