【发布时间】:2012-02-21 10:06:46
【问题描述】:
我正在设计一个能够进行一些基本图像处理的简单图片查看器。目前我遇到的问题是始终将PictureBox 居中在TabPage 内,并保持图片框的宽度和大小与其显示的图片相同。到目前为止,我没有成功。
我在表单构造函数中调用了以下代码以将其定位在中心。它第一次使图片框居中:
private void SetPictureBoxOriginalSizeAndLocation(bool makeImageNull = false, DockStyle dockStyle = DockStyle.None)
{
if (makeImageNull) picBoxView.Image = null;
picBoxView.Dock = dockStyle;
var xPoint = tabImageView.Location.X + ((splitContainer.Panel2.Width / 2) / 2);
var yPoint = tabImageView.Location.Y;
var width = tabImageView.Width / 2;
var height = (tabImageView.Height / 2) - toolStripImageView.Height;
if (picBoxView.Image == null) return;
//Resize image according to width
picBoxView.Image = ImageMethods.ResizeImage(picBoxView.Image.Tag.ToString(), width, height, false);
picBoxView.Location = new Point(xPoint, yPoint);
picBoxView.Width = width;
picBoxView.Height = height;
}
但它不会将图片框调整为其图像的大小(您可以看到图片框控件的背景颜色为黑色的部分):
一旦我调整表单大小,问题就会变得更糟,图片框的位置会移到顶部:
我在表单的 resize 事件中也调用了上面的代码,不知道为什么它在应用程序启动时起作用。如果有人能告诉我应该注意哪些属性来实现一个居中且始终与其图像一样大的图片框,那就太好了。
【问题讨论】:
-
尝试将Dock设置为填充并将图像设置为背景图像。 BackgroundImageLayout 可以设置为Center。并且背景颜色为透明
-
picturebox.Image的大小是否等于picturebox的大小?因为我需要处理图像的像素,我不知道图片框是否大于图片,我正在处理的图像将是图片框本身?!我知道听起来很愚蠢! -
但是我想如果我想放大图片我会遇到问题!
标签: c# winforms picturebox