C#picturebox加载带偏移的图像

さりげ*_*い告白 4 c# image sprite picturebox winforms

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

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

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

Jef*_*ata 9

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

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


Mar*_*rco 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);
}
Run Code Online (Sandbox Code Playgroud)

我们的想法是创建一个新图像(imgdst)并在其上绘制您需要的原始图像部分.
使用新图像,您可以随心所欲,甚至可以在图片框中绘制.