Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengubah Saiz WinForm Tanpa Sempadan?

Bagaimana untuk Mengubah Saiz WinForm Tanpa Sempadan?

DDD
Lepaskan: 2025-01-11 13:12:43
asal
610 orang telah melayarinya

How to Resize a Borderless WinForm?

Mencipta WinForm Tanpa Sempadan Boleh Diubah: Panduan Lengkap

Apabila menyesuaikan penampilan Windows Forms, anda mungkin mahu mengalih keluar sempadan lalai dan membenarkan saiz semula. Walaupun sifat "FormBorderStyle" membenarkan sempadan disembunyikan, ia juga melumpuhkan saiz semula.

Untuk menyelesaikan masalah ini, pertimbangkan kod tersuai berikut, yang membenarkan pengalihan dan saiz semula tanpa sempadan:

<code class="language-c#">public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.FormBorderStyle = FormBorderStyle.None;
        this.DoubleBuffered = true;
        this.SetStyle(ControlStyles.ResizeRedraw, true);
    }

    private const int cGrip = 16;      // 调整大小手柄尺寸
    private const int cCaption = 32;   // 标题栏高度

    protected override void OnPaint(PaintEventArgs e)
    {
        // 绘制右下角的调整大小手柄
        Rectangle rc = new Rectangle(this.ClientSize.Width - cGrip, this.ClientSize.Height - cGrip, cGrip, cGrip);
        ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc);

        // 绘制模拟的标题栏
        rc = new Rectangle(0, 0, this.ClientSize.Width, cCaption);
        e.Graphics.FillRectangle(Brushes.DarkBlue, rc);
    }

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x84) // 捕获 WM_NCHITTEST 消息
        {
            Point pos = new Point(m.LParam.ToInt32());
            pos = this.PointToClient(pos);
            if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip)
            {
                m.Result = (IntPtr)17; // HTBOTTOMRIGHT
                return;
            }
        }
        base.WndProc(ref m);
    }
}</code>
Salin selepas log masuk

Kod ini mengandungi elemen utama berikut:

  • Lukis pemegang ubah saiz: Pemegang lakaran tersuai ini membenarkan saiz semula pemegang sudut.
  • Bar Tajuk Lukis: Lukis bar tajuk simulasi untuk menyediakan sasaran klik dan seret untuk mengalihkan borang.
  • Mengendalikan Mesej Windows: Pengendalian mesej memastikan saiz semula didayakan apabila pengguna mengklik pada pemegang dan kursor tetikus yang betul dipaparkan.

Dengan melaksanakan kod ini, anda kini boleh menikmati faedah WinForm tanpa sempadan dan mengubah saiznya dengan mudah.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz WinForm Tanpa Sempadan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan