0

PictureBox解像度が異なるとサイズが異なるという問題があります。

それに合わせる必要のある画像がありPictureBoxますが、自分でサイズ変更を行う必要があるため、その描画サイズを知る必要があります(そうでない場合、システムが遅すぎたため、手動でサイズ変更を行うことにしました。必要な解像度がわかっている場合は正常に動作します)。

PictureBox.Height / Width、、を試しPictureBox.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をさまざまな解像度でよく見ることができます。その実際の描画領域を取得するにはどうすればよいですか?

4

2 に答える 2

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;

于 2012-09-06T16:39:54.227 に答える