1

私は C# と Visual Studio の学習を始めたばかりで、本とサンプル コードの両方で作業しようとしています。

これはあまり素晴らしい質問ではないことは承知していますが、これが私が解決しようとしている問題です。Windows フォームがあり、tableLayoutPanel に含まれる画像ボックスに画像を表示する必要があります。単純な問題は、ロードする必要がある画像にいくつかのサイズがあり、典型的な画像が割り当てられたスペース内に完全に表示されないことです: コンテナに収まる領域のみが表示され、画像の残りの部分が切り取られます. 画像全体を表示する必要があり、サイズを変更する必要はありません。すでに autosize プロパティを設定していますが、うまくいかないようです。

ここでは、form.cs のコードをいくつか示します。

   string imageName = openFileDialog1.FileName;        // Get the image name

// Read the image

try
{
img = ( Bitmap) Image .FromFile(imageName);
}
catch
{
     MessageBox.Show("oooops" , Text, MessageBoxButtons.OK, MessageBoxIcon .Hand);
}
pictureBox1.Image = img;   // show the image

次に、form.designer.cs にあるプライベート void InitializeComponent() で:

this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
 ...
this.pictureBox1 = new System.Windows.Forms.PictureBox();
...
this.tableLayoutPanel1.Controls.Add(this.pictureBox1, 1, 1);
...
this.tableLayoutPanel1.Controls.Add(this.pictureBox1, 1, 1);
...
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 9.034863F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 2.388038F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 88.5771F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(784, 762);
...
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;

画像全体を表示する方法について何かヒントはありますか?

スライドバーを使用しても問題ありませんが、コンテナが autoscroll = true であるという事実にもかかわらず、何も起こらず、画像はまだ切り詰められています。

助けてくれてありがとう

4

1 に答える 1

1

tableLayout コントロールの autoscroll プロパティは、すべての子コントロールを含むテーブル全体のスクロールを管理します。画像が大きすぎて画像コントロール ボックスに収まらない場合、autoscroll = yes プロパティはスライドバーを表示し、個々の画像セルではなく、テーブル レイアウト コントロールにパックされたすべてのコンテンツをスライドできるようにします。自動スクロールは、私が理解している限り、コンテナのプロパティであるため、ピクチャボックスには自動スクロールプロパティがありません。割り当てられた独自のスペースで画像をスライドするには、中間コンテナを使用する必要があると思います。

私の質問は良い質問ではありませんでした。それは、知識や概念の真の欠如というよりも、封じ込めの階層と関連する特性についての私の混乱に根ざしています。まあ、改善の余地は常にあります...

于 2012-05-23T12:24:28.817 に答える