J'essaie actuellement d'ajouter un panneau redimensionnable à mon projet winforms C#.Restreindre le panneau redimensionnable (ratio et taille min/max)
Actuellement, je suis en utilisant ce code pour obtenir ce que je veux:
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);
}
}
}
Son fonctionne bien, mais maintenant je voudrais limiter un certain nombre de choses.
Je ne veux pas que le panneau soit plus petit que 420x236. J'ai essayé de définir le MinimumSize mais en ignorant cela quand j'essaye de redimensionner.
Je souhaite conserver un format d'image de 16: 9.
Comment pourrais-je obtenir cela avec le code ci-dessus? Y'a-t'il un quelconque moyen d'y arriver?
Avez-vous essayé SetBoundsCore()? C'est une méthode virtuelle et vous pouvez l'utiliser dans des situations comme la vôtre. – Bahrom