C#picturebox加载带偏移的图像

我有一个包含多个图像的资源文件(.png格式)。 它们的大小和间距可以根据它们的偏移量相对容易地调用。

我可以调整图片框的大小以适应一张图片; 但是,我不知道如何根据偏移量加载图像,所以我总是只能得到左上角的图像。

我几乎可以使用任何方法,但是在我的搜索中没有任何有用的东西 – 因为我真的不知道要搜索什么。

假设你的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)并在其上绘制您需要的原始图像部分。
使用新图像,您可以随心所欲,甚至可以在图片框中绘制。

您可以使用面板作为视口将PictureBox放在Panel 。 确保面板的AutoScroll属性为false因此您不会出现滚动条。 然后,将图像加载到PictureBox ,并相对于Panel设置它的位置,以便只显示您想要显示的区域。

 pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; pictureBox1.Image = Image.FromFile(@"C:\MyPicture.png"); pictureBox1.Location = new Point(-100, -100); 

听起来你喜欢做像精灵这样的事情; 您只有一个图像加载,然后移动“视图端口”以显示不同的图像。

如果是这种情况,您将无法使用库存PictureBox类执行此操作。 您可以控制尺寸,但不能控制定位。 我认为您需要做的是通过代码加载图像,并根据该图像的必要部分创建新图像(使用GDI +)。

如果您只想为用户显示图像,可以将图像添加到标签中,然后根据需要设置图像的对齐属性。