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中找到的private 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 回答