В настоящее время я работаю над приложением, чтобы автоматизировать генерацию наборов элементов. На самом деле мой вопрос довольно прост. У меня возникли проблемы с разделением файла на плитки. Можно ли создавать отдельные изображения из PictureBox или есть другой, более эффективный способ? Я хочу вырезать графику в плитки, чтобы переставить их.Windows Forms C#, редактирование изображений
ответ
Вы можете получить суб-изображение с PictureBox
относительно легко - это изображение всего лишь bitmap
. Вы можете использовать классы bitmap Clone()
, который принимает Rectangle
и PixelFormat
.
Bitmap image = pictureBox.Image;
Bitmap subImage = image.Clone(new Rect(0,0,64,64), image.PixelFormat);
субизображения в этом случае будет начинаться с позиции (0,0) в изображении и 64x64 в размере
Для того, чтобы изменить порядок плитки вы можете распечатать их обратно на PictureBox, как так:
Graphics g = Graphics.FromImage(image);
g.drawImage(subImage, 64, 64);
pictureBox.Image = image;
Это привлечёт subImage
в образ в (64,64), мы захватили из PictureBox, image
, раньше и затем установите PictureBox изображение в отредактированной один.
Это может хорошо работать. Однако [прочитайте это] (http://stackoverflow.com/questions/12709360/whats-the-difference-between-bitmap-clone-and-new-bitmapbitmap), чтобы понять последствия использования клона, т. Е. Сделать только мелкая копия – TaW
Спасибо, я не понимал, что так работал клоун. Хотя в этом случае правильное отображение будет только измененным? –
Да, или скорее __all__ те плитки, которые он вырезает из оригинала, будут зависеть от него. – TaW
Ваш код и все ошибки? – KDOT
Благодарим за отзыв, Ну, я на самом деле ищу только идею tbh. Обработка изображений с помощью PictureBoxes просто не соответствует действительности. –
Конечно, есть много способов. Я бы: создал их и наполнил ими в ImageList, если они соответствуют пределу 256x256. В противном случае список будет делать то же самое. Затем нарисуйте их, возможно, в виде изображения или, возможно, в файл picturebox.image, когда вы захотите переделать макет. Чтобы создать плитки, используйте подходящую перегрузку и графический объект, созданный из целевого растрового изображения. –
TaW