2011-07-30 160 views
4

當我調整窗體大小時,如何將圖像置於圖片框中?我擁有的是一個面板中的圖片框,所以如果圖片大於圖片框,我可以在面板上獲得滾動條。但這不適用於圖片框大小模式「中心圖像」,只適用於「自動大小」。如何在調整大小的圖片框中居中圖像?

回答

15

不要在這裏使用一個PictureBox,一個Panel已經完全能夠通過它的BackgroundImage屬性顯示一個居中的圖像。所有需要的是打開其DoubleBuffered屬性來抑制閃爍。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將新控件從工具箱的頂部放到窗體上,更換面板。使用屬性窗口或在您的代碼中指定其BackgroundImage屬性。

using System; 
using System.Drawing; 
using System.Windows.Forms; 

internal class PicturePanel : Panel { 
    public PicturePanel() { 
     this.DoubleBuffered = true; 
     this.AutoScroll = true; 
     this.BackgroundImageLayout = ImageLayout.Center; 
    } 
    public override Image BackgroundImage { 
     get { return base.BackgroundImage; } 
     set { 
      base.BackgroundImage = value; 
      if (value != null) this.AutoScrollMinSize = value.Size; 
     } 
    } 
} 
0

使用Padding有什麼問題?

void picturebox_Paint(object sender, PaintEventArgs e) 
{ 
    int a = picturebox.Width - picturebox.Image.Width; 
    int b = picturebox.Height - picturebox.Image.Height; 
    Padding p = new System.Windows.Forms.Padding(); 
    p.Left = a/2; 
    p.Top = b/2; 
    picturebox.Padding = p; 
} 
0

這可以很容易地與SizeMode屬性

pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; 
完成
相關問題