現在、サイズ変更可能なパネルをC#winformsプロジェクトに追加しようとしています。サイズ変更可能なパネルを制限する(比率と最小/最大サイズ)
現在、私が欲しいものを得るために、このコードを使用しています:
using System;
using System.Drawing;
using System.Windows.Forms;
class ResizablePanel : Panel
{
private const int grab = 16;
public ResizablePanel()
{
this.ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var rc = new Rectangle(this.ClientSize.Width - grab, this.ClientSize.Height - grab, grab, grab);
ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc);
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0x84)
{
var pos = this.PointToClient(new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16));
if (pos.X >= this.ClientSize.Width - grab && pos.Y >= this.ClientSize.Height - grab)
m.Result = new IntPtr(17);
}
}
}
その細かい作業が、今、私はいくつかのことを制限したいと思います。
私はパネルを420x236より小さくしたくありません。 私はMinimumSizeを設定しようとしましたが、サイズを変更しようとすると無視しました。
16:9の縦横比を維持したいと考えています。
どのように私は上記のコードを取得できますか?それを行う方法はありますか?
SetBoundsCore()を試しましたか?それは仮想的な方法であり、あなたのような状況で使用することができます。 – Bahrom