현재 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를 무시하려고했지만 MinimumSize를 설정하려고했습니다.
가로 세로 비율을 16 : 9로 유지하고 싶습니다.
위의 코드를 사용하면 어떻게됩니까? 그것을 할 방법이 있습니까?
SetBoundsCore()를 시도해 보셨습니까? 그것은 가상 방법이고 당신 같은 상황에서 사용할 수 있습니다. – Bahrom