C # picturebox загрузить изображение со смещением - PullRequest
4 голосов
/ 07 октября 2011

У меня есть файл ресурсов (в формате .png), который содержит несколько изображений.Они имеют размеры и расположены таким образом, чтобы их было относительно легко вызывать в зависимости от их смещений.

Я могу подобрать размер графического блока так, чтобы он идеально подходил к одному изображению;тем не менее, я не знаю, как загрузить изображение, основываясь на его смещениях, поэтому я всегда получу изображение в левом верхнем углу.не смог найти ничего полезного в моих поисках - поскольку я не знал, что именно искать.

Ответы [ 4 ]

9 голосов
/ 07 октября 2011

Вы можете поместить PictureBox в Panel, используя панель в качестве окна просмотра. Убедитесь, что свойство панели AutoScroll равно false, чтобы не появлялись полосы прокрутки. Затем загрузите изображение в PictureBox и установите его местоположение относительно Panel, чтобы видна была только область, которую вы хотите показать.

pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.Image = Image.FromFile(@"C:\MyPicture.png");
pictureBox1.Location = new Point(-100, -100);
7 голосов
/ 07 октября 2011

Предполагая, что ваше 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) и нарисовать на нем ту часть исходного изображения, которая вам нужна.
С новым изображением вы можете делать то, что вам нравится, даже рисовать его в картинке.

0 голосов
/ 05 июля 2013

Если вы просто хотите показать изображение для пользователей, вы можете добавить изображение в метку, а затем установить свойство выравнивания изображения так, как вам нравится.

0 голосов
/ 07 октября 2011

Звучит так, будто вы пытаетесь делать что-то вроде спрайтов; где у вас загружено только одно изображение, а затем переместите «порт просмотра», чтобы показать разные изображения.

Если это так, вы не сможете сделать это с классом PictureBox. Вы можете контролировать размер, но не позиционирование. Я думаю, вам нужно загрузить изображение с помощью кода и создать новые изображения на основе необходимой части этого изображения (используя GDI +).

...