mukesh_panth Ответов: 4

как отобразить несколько изображений в одном графическом окне с помощью vb.net


Всем Привет,

Я использую VB.Net, VS2008 и Win7.
Я хочу добавить несколько изображений в один picturebox с помощью VB.Сеть и дисплей на printpreviewcontrol для печати.
Как можно отобразить несколько изображений в элементе управления предварительным просмотром печати.

Помощь будет очень признательна.
Любую ссылку или идею мою дайте мне.

Мукеш :-)

4 Ответов

Рейтинг:
33

OriginalGriff

Вы не можете показать несколько изображений в одном PictureBox - он имеет только одно свойство изображения.
Чтобы сделать что-то подобное, вам нужно будет создать достаточно большой растровый объект, чтобы вместить несколько ваших изображений, а затем нарисовать их, используя графический объект из растрового изображения:

Using g As Graphics = Graphics.FromImage(myBigBitmap)
	For Each i As Image In myListOfImagesToAdd
		g.DrawImage(i, pointToDrawit)
		pointToDrawIt = MoveForNextImage(pointToDrawIt, i)
	Next
End Using

Предположительно, это также решит вашу проблему предварительного просмотра печати, хотя я бы настоятельно рекомендовал вам использовать PrintDocument, а не пытаться печатать экранные изображения...


Sergey Alexandrovich Kryukov

Согласитесь, мой 5. Хороший момент о PrintDocument. См. дополнительную информацию в моем ответе, ссылка.
--СА

Espen Harlinn

Хороший ответ, мой 5

OriginalGriff

Какую часть вы не понимаете?
В этом коде нет ничего особенно сложного, поэтому мне нужно знать то, чего вы не знаете (если вы понимаете, что я имею в виду): смейтесь:

fjdiewornncalwe

Именно об этом я и думал. +5.

Рейтинг:
25

Christian Graus

Ты не можешь. Коробка с картинками бесполезна ни для чего, кроме показа одного изображения для людей, которые сами не знают, как его показать. Одна коробка на картинку, вы можете обойти это, нарисовав все свои фотографии в одну большую и показав ее, или имея много коробок, или передав свое событие paint и нарисовав свои собственные фотографии.


Sergey Alexandrovich Kryukov

Правильно, мой 5. Еще один вариант злоупотребления PictureBox (который почти ни на что не годится). Более подробно в моем ответе.
--СА

Espen Harlinn

Я ожидал от тебя несколько иного ответа Кристиан :)

Рейтинг:
1

Espen Harlinn

Взгляните на Статьи Кристиана грауса[^] о GDI+. Это должно помочь вам сделать практически все, что вы хотели бы сделать - используя подход, описанный OriginalGriff.

С уважением
Эспен Харлинн


Sergey Alexandrovich Kryukov

Еще один возможный способ узнать что-то на эту тему. Мой 5.
--СА

Espen Harlinn

Спасибо, Сергей! Кристиан написал много материала, который ОП должен найти полезным.

Рейтинг:
0

Sergey Alexandrovich Kryukov

О (вздох)… Я обнаружил еще один случай попытки злоупотребления PictureBox- Позвольте мне это объяснить. Этот элемент управления предназначен для тех, кто вообще не хочет иметь дело с какой-либо графикой. Что-нибудь попроще и попроще. Ничего динамичного, одушевленного, комбинированного, управляемого. Чистое статичное изображение, может быть, иногда заменяемое, но не часто.

По причине глубокой путаницы с графикой многие пытаются сделать гораздо больше, что возможно, но просто глупо. Этот контроль ему не помогает, только доставляет хлопоты.

Итак, что же делать? Что-то более простое:
Как очистить панель от старого рисунка[^].

Если картинка статична, то все еще проще. Сделайте недействительность, никакой двойной буферизации. Но вы можете делать движущиеся изображения, анимацию, сохранение в файл или загрузку из файлов и многое другое.

—СА


Christian Graus

Графический блок был разработан, как много МС вещи. Так что люди, слишком тупые, чтобы писать код, могут заставить вещи происходить на экране.

Sergey Alexandrovich Kryukov

Хорошая точка.
--СА

Espen Harlinn

Хорошие моменты, мои 5

Sergey Alexandrovich Kryukov

- Спасибо, Эспен.
--СА