C#更改图片框的增长面

时间:2017-07-16 00:52:58

标签: c# .net winforms

当您更改图片框的大小时,它会从右下方延伸并将图像锁定在左上角。我怎么能改变它,使它从左上角增长并将图像锁定在右边的?

目前,我正在更改位置以调整大小更改,但这并不是将图像保留在框的右侧。

1 个答案:

答案 0 :(得分:0)

PictureBox根据尺寸模式计算图像的矩形并将图像绘制到其中。计算基于PB的大小,填充和图像大小。一种棘手的方法可能是使用其中一种,例如Padding。

public class MyPictureBox : System.Windows.Forms.PictureBox
{
    public MyPictureBox()
    {
        SetStyle(ControlStyles.ResizeRedraw, true);
    }

    void AdjustPadding(Padding padding)
    {
        if (this.Image == null) return;
        var dw = Width - padding.Horizontal - Image.Size.Width;
        var dh = Height - padding.Vertical - Image.Size.Height;
        padding.Left += dw;
        padding.Top += dh;
        base.Padding = padding;
    }

    protected override void OnInvalidated(InvalidateEventArgs e)
    {
        base.OnInvalidated(e);
        AdjustPadding(this.padding);
    }

    Padding padding;

    public new Padding Padding
    {
        get { return padding; }
        set
        {
            this.padding = value;
            AdjustPadding(this.padding);
        }
    }