2012-09-06 93 views
0

我有一個問題,PictureBox在不同分辨率之間大小不同。從PictureBox獲取繪圖區域

我有一個圖像,我需要適合PictureBox,但我需要知道它的圖形尺寸,因爲我需要做自己調整大小(否則系統太慢了,我決定去做手動調整大小,如果我知道需要的解決方案,它工作正常)。

我試過PictureBox.Height/WidthPictureBox.ClientRectangle.Height/Width,但是所有分辨率的值都是一樣的。我如何設法獲得實際的圖紙尺寸?

的初始化代碼:

  // 
      // PicboxRed 
      // 
      this.PicboxRed.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
         | System.Windows.Forms.AnchorStyles.Left) 
         | System.Windows.Forms.AnchorStyles.Right))); 

      this.PicboxRed.BackColor = System.Drawing.Color.DimGray; 
      this.PicboxRed.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 
      this.PicboxRed.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 
      this.PicboxRed.Location = new System.Drawing.Point(19, 92); 
      this.PicboxRed.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); 
      this.PicboxRed.Name = "PicboxRed"; 
      this.PicboxRed.Size = new System.Drawing.Size(852, 840); 
      this.PicboxRed.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal; 
      this.PicboxRed.TabIndex = 9; 
      this.PicboxRed.TabStop = false; 
      this.PicboxRed.Click += new System.EventHandler(this.PicboxRed_Click); 
      this.PicboxRed.Paint += new System.Windows.Forms.PaintEventHandler(this.Picbox_Paint); 

我明白,這與所設置的錨的事,但這種允許在PictureBox得到很好的看到不同的分辨率。我如何抓住真實的繪畫區域?

回答

1

ClientSize屬性會告訴你這是多麼大。 ClientSizeChanged事件告訴你它何時因任何原因而改變,包括由於表單的AutoScaleMode屬性而自動縮放。

+0

謝謝,結果是它只在實際顯示時得到調整大小,而不是在初始化之後。之後它顯示了預期的價值。 – SinisterMJ

0

I tried PictureBox.Height/Width, and PictureBox.ClientRectangle.Height/Width, but that values are the same for all resolutions.

我認爲你正在尋找的DPI設置:

int currentDPI = 0; 

using (Graphics g = this.CreateGraphics()) 
{ 
    currentDPI = (int)g.DpiX;  
} 

此值應改變與不同的分辨率和DPI設置的計算機上。

或者,您可能對獲取當前屏幕分辨率感興趣。他們可能會有所幫助:

Rectangle resolution = Screen.PrimaryScreen.Bounds;