我有一个包含多个图像的资源文件(.png格式)。它们的大小和间距可以根据它们的偏移量相对容易地调用。
我可以调整图片框的大小以适应一张图片;但是,我不知道如何基于它的偏移加载图像,所以我总是只得到左上角的那个。
我使用任何方法都很好,但是在我的搜索中无法找到任何有用的东西 - 因为我真的不知道要搜索什么。
答案 0 :(得分:9)
您可以使用面板作为视口,将PictureBox
放在Panel
中。确保面板的AutoScroll
属性为false
,这样您就不会出现滚动条。然后,在PictureBox
中加载图片,并设置相对于Panel
的位置,以便只显示您要显示的区域。
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.Image = Image.FromFile(@"C:\MyPicture.png");
pictureBox1.Location = new Point(-100, -100);
答案 1 :(得分:7)
假设您的PNG图像是 imgwidth 像素宽并由 n 水平图像组成,您可以试试这个:
Image imgsrc = Image.FromFile("...."); // your PNG file
Image imgdst = new Bitmap(imgwidth/n, imgsrc.Height);
using (Graphics gr = Graphics.FromImage(imgdst))
{
gr.DrawImage(imgsrc,
new RectangleF(0, 0, imgdst.Width, imgdst.Height),
new RectangleF(imgindex * imgwidth/n, 0, imgwidth/n, imgsrc.Height),
GraphicsUnit.Pixel);
}
我们的想法是创建一个新图像(imgdst)并在其上绘制您需要的原始图像部分。
使用新图像,您可以随心所欲地进行操作,甚至可以在图片框中绘制。
答案 2 :(得分:0)
听起来你喜欢做像精灵这样的事情;您只有一个图像加载,然后移动“视图端口”以显示不同的图像。
如果是这种情况,您将无法使用库存PictureBox
类执行此操作。您可以控制尺寸,但不能控制定位。我认为您需要做的是通过代码加载图像,并根据该图像的必要部分创建新图像(使用GDI +)。
答案 3 :(得分:0)
如果您只想为用户显示图像,可以将图像添加到标签中,然后根据需要设置图像的对齐属性。