C#picturebox加载带偏移的图像

时间:2011-10-06 20:50:36

标签: c# winforms image sprite picturebox

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

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

我使用任何方法都很好,但是在我的搜索中无法找到任何有用的东西 - 因为我真的不知道要搜索什么。

4 个答案:

答案 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)

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