2016-02-11 10 views
-1

В настоящее время я работаю над приложением, чтобы автоматизировать генерацию наборов элементов. На самом деле мой вопрос довольно прост. У меня возникли проблемы с разделением файла на плитки. Можно ли создавать отдельные изображения из PictureBox или есть другой, более эффективный способ? Я хочу вырезать графику в плитки, чтобы переставить их.Windows Forms C#, редактирование изображений

+2

Ваш код и все ошибки? – KDOT

+2

Благодарим за отзыв, Ну, я на самом деле ищу только идею tbh. Обработка изображений с помощью PictureBoxes просто не соответствует действительности. –

+0

Конечно, есть много способов. Я бы: создал их и наполнил ими в ImageList, если они соответствуют пределу 256x256. В противном случае список будет делать то же самое. Затем нарисуйте их, возможно, в виде изображения или, возможно, в файл picturebox.image, когда вы захотите переделать макет. Чтобы создать плитки, используйте подходящую перегрузку и графический объект, созданный из целевого растрового изображения. – TaW

ответ

1

Вы можете получить суб-изображение с 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 изображение в отредактированной один.

+1

Это может хорошо работать. Однако [прочитайте это] (http://stackoverflow.com/questions/12709360/whats-the-difference-between-bitmap-clone-and-new-bitmapbitmap), чтобы понять последствия использования клона, т. Е. Сделать только мелкая копия – TaW

+0

Спасибо, я не понимал, что так работал клоун. Хотя в этом случае правильное отображение будет только измененным? –

+0

Да, или скорее __all__ те плитки, которые он вырезает из оригинала, будут зависеть от него. – TaW