Печать картинки объектом Printer

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
amelina
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 26.11.2003 (Ср) 19:39
Откуда: Москва

Печать картинки объектом Printer

Сообщение amelina » 22.12.2003 (Пн) 16:50

Кто-нибудь знает, как напечатать с помощью объекта Printer картинку?
У меня, например, хранится файл вроде "логотипа" организации в таблице Access в поле OLE.

А у объекта Printer есть такой метод:

Код: Выделить всё
Printer.PaintPicture


а основной аргумент:

Код: Выделить всё
Picture as IPictureDisp


А как на картинку сослаться - не пойму.. :?

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

PaintPicture+Image...

Сообщение hCORe » 22.12.2003 (Пн) 18:43

Используй объект Image на форме (назовем его imgTMP) и перенеси в него картинку из базы. Печать будет выглядеть примерно так:

Код: Выделить всё
Private Sub PrintImage ()
Printer.PaintPicture imgTMP.Picture 'это и есть IPictureDisp, а по русски - дескриптор картинки!
End Sub


ЗЫ. Можно и Picture использовать, у него тоже такое свойство есть :wink:

ЗЗЫ. Как выловить содержимое поля OLE - сам не знаю :cry:
Моду создают модоки, а распространяют модозвоны.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 25.12.2003 (Чт) 0:33

Связываешь картинку с ПикчерБоксом и после этого печатаешь

Код: Выделить всё
Printer.CurentX=10
Printer.CurentY=10
' ... короче тут любой код
Printer.PaintPicture Picture1.Picture
Printer.EndDoc


Picture1 - ПикчерБокс
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

amelina
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 26.11.2003 (Ср) 19:39
Откуда: Москва

Сообщение amelina » 25.12.2003 (Чт) 11:42

SSecurity писал(а):Связываешь картинку с ПикчерБоксом


Гы, легко сказать :)

А если я прямо из менюшки MDI-формы печатать хочу? Прайс-лист, например, с логотипом, например? А?

MDI капризничает чего-то по поводу вставления в нее картинок - только не помню, то ли PictureBox, то ли ImageBox ей не нравится.


p.s. Вау, у меня вроде бы одна звездочка закрасилась =))))

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.12.2003 (Пт) 0:14

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

лично я не вижу проблемы, еслив чем-то етсь проблема, считаю возможным обойти её с другой стороны и решить :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

amelina
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 26.11.2003 (Ср) 19:39
Откуда: Москва

Сообщение amelina » 26.12.2003 (Пт) 10:47

SSecurity писал(а):лично я не вижу проблемы, еслив чем-то етсь проблема, считаю возможным обойти её с другой стороны и решить :)


Совершенно согласна...

А проблема в том, что я хочу вытащить картинку из поля OLE.
Ну и послать ее на принтер с помощью объекта Printer... :D

Если можешь объяснить поподробнее, с какой стороны тут обойти, буду благодарна...

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 27.12.2003 (Сб) 1:42

Уважаемая, amelina
Предлагаю Вашему вниманию код ... хотя я и не знал ... но немного поэксперементировав узнал ... :)

Private Sub Form_Click()
OLE1.Visible = False
OLE1.AppIsRunning = True
Image1.Picture = OLE1.Picture
End Sub

На Форме
DATA1 - ну это понятно база данных для связи
OLE1 - объект OLE
Image1 - Image всё с тулсов

У объекта ОЛЕ есть свойства ДАТАСоурс и ДатаФилд, думаю ты знаешь, что с ними делать :)
по клику на форме точечный рисунок из ОЛЕ передается в Image
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

amelina
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 26.11.2003 (Ср) 19:39
Откуда: Москва

Сообщение amelina » 27.12.2003 (Сб) 9:36

Спасибо, попробую... :D

amelina
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 26.11.2003 (Ср) 19:39
Откуда: Москва

Сообщение amelina » 27.12.2003 (Сб) 12:12

А вот это интересно...

Пишу:
Код: Выделить всё
OLE1.Visible = False
OLE1.AppIsRunning = True
MsgBox OLE1.AppIsRunning



Выдает False...
После этого, разумеется, если пробовать
Код: Выделить всё
Image1.Picture = OLE1.Picture

выдает ошибку object not running

:(

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 28.12.2003 (Вс) 0:09

Попробуй напиши

Код: Выделить всё
OLE1.AutoActivate = 3


Это автоматически активирует ОЛЕ-объект при обращении к нему ... по умолчанию кажтся установлено по КЛИКУ :)

Попробуй
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 5

    TopList