如何在图片框中居中调整大小
本文关键字:调整 中居 | 更新日期: 2023-09-27 18:03:55
如何在调整窗体大小时将图片居中?我有一个面板中的picturebox如果图像比picturebox大,我可以在面板上得到滚动条。但这并不适用于图片框大小模式"中心图像",只适用于"自动大小"。
这可以通过SizeMode属性轻松实现
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
不要在这里使用PictureBox, Panel已经完全能够通过其BackgroundImage属性显示居中图像。所需要做的就是打开它的DoubleBuffered属性来抑制闪烁。向项目添加一个新类,并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到窗体上,替换面板。在"属性"窗口或在您的代码中指定它的BackgroundImage属性。
using System;
using System.Drawing;
using System.Windows.Forms;
internal class PicturePanel : Panel {
public PicturePanel() {
this.DoubleBuffered = true;
this.AutoScroll = true;
this.BackgroundImageLayout = ImageLayout.Center;
}
public override Image BackgroundImage {
get { return base.BackgroundImage; }
set {
base.BackgroundImage = value;
if (value != null) this.AutoScrollMinSize = value.Size;
}
}
}
使用Padding有什么问题?
void picturebox_Paint(object sender, PaintEventArgs e)
{
int a = picturebox.Width - picturebox.Image.Width;
int b = picturebox.Height - picturebox.Image.Height;
Padding p = new System.Windows.Forms.Padding();
p.Left = a / 2;
p.Top = b / 2;
picturebox.Padding = p;
}