2017-07-16 13 views
0

画像ボックスのサイズを変更すると、画像ボックスの右端が拡大され、画像が左上に固定されます。どのように私はそれが左上から成長し、ボトムの右に画像をロックするようにそれを変更することができますか?C#画像ボックスの拡大する面を変更する

現在、サイズ変更に合わせて位置を変更していますが、これは画像をボックスのボトムに保存していません。

+0

可能な重複[右揃え画像を配置する方法を、ピクチャボックスの一番下](https://stackoverflow.com/questions/7174910/how-to-put-image-aligned-right-bottom-in-ピクチャボックス) –

答えて

0

ピクチャボックスは、サイズモードに応じてイメージの矩形を計算し、そのイメージを描画します。計算は、PBのサイズ、そのパディング、およびイメージサイズに基づいています。難しいのは、それらのうちの1つ、たとえばパディングを使用することです。

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); 
     } 
    } 
関連する問題