C++Builder 5 - image в OLE формат
3 отговора
81 прегледа
C++Builder 5 - image в OLE формат
C++Builder 5 - image в OLE формат, от Access DB в QuickReport...
Image-ите ми са в Access DB като OLE Object... Ползвам BCB 5.0 и ADO... Целта е да принтирам картинката...
Каквото видях в Гугъл излиза, че това е сериозен проблем... Трябва да махна някакъв хедър на OLE-то, който е 78 байта /вероятно/...
Проблемът е, че OLE-то ми съдържа .jpg, .gif, .bmp и идея си нямам как да вържа цялата работа с TQRDBImage.
Много неприятна е цялата тази работа, разчитам на помощ. Дано някой е имал този проблем и е открил решение . Пуснал съм в различни форуми, защото наистина се надявам да има някакво по-елегантно решение от това да бъркам в OLE-то.
Знам, че форумът е за Делфи, обаче май там също го има този проблем...
Image-ите ми са в Access DB като OLE Object... Ползвам BCB 5.0 и ADO... Целта е да принтирам картинката...
Каквото видях в Гугъл излиза, че това е сериозен проблем... Трябва да махна някакъв хедър на OLE-то, който е 78 байта /вероятно/...
Проблемът е, че OLE-то ми съдържа .jpg, .gif, .bmp и идея си нямам как да вържа цялата работа с TQRDBImage.
Много неприятна е цялата тази работа, разчитам на помощ. Дано някой е имал този проблем и е открил решение . Пуснал съм в различни форуми, защото наистина се надявам да има някакво по-елегантно решение от това да бъркам в OLE-то.
Знам, че форумът е за Делфи, обаче май там също го има този проблем...
Re: C++Builder 5 - image в OLE формат
Изглежда за принтиране ще трябва да ползваш TQRImage..поне докато се намери по-елегантно решение :
OleContainer1->Copy();
TQRImage *i = Form1->QRImage1;
TQRDBImage *di = Form1->QRDBImage1;
i->Stretch = di->Stretch ;
i->BoundsRect = di->BoundsRect ;i->Visible =false;
int x = Clipboard()->GetAsHandle(CF_BITMAP);
i->Picture->LoadFromClipboardFormat(CF_BITMAP,x,0) ;
Form1->QuickRep1->Preview() ;
Успех.
OleContainer1->Copy();
TQRImage *i = Form1->QRImage1;
TQRDBImage *di = Form1->QRDBImage1;
i->Stretch = di->Stretch ;
i->BoundsRect = di->BoundsRect ;i->Visible =false;
int x = Clipboard()->GetAsHandle(CF_BITMAP);
i->Picture->LoadFromClipboardFormat(CF_BITMAP,x,0) ;
Form1->QuickRep1->Preview() ;
Успех.
Re: C++Builder 5 - image в OLE формат
Мерси за съвета, чак сега виждам отговора. Междувременно проблемът го реших по сходен начин... Значи извличането от базата данни стана безпроблемно през blob stream-ове...
Обаче не разбирам защо се губи качеството на image-а? Примерно jpeg 300dpi излиза като 96dpi /или 72, не знам точно/... Нещо вътрешно си бъзика билдъра... А печатането ми е фундаментално... Прегледах сто хиляди неща по въпроса и никак не успях да си реша проблема...
Дано утре на отпочинала глава да измисля нещо
Ако някой знае как да постъпя ще бъда изключително благодарен
Поздрави!
Обаче не разбирам защо се губи качеството на image-а? Примерно jpeg 300dpi излиза като 96dpi /или 72, не знам точно/... Нещо вътрешно си бъзика билдъра... А печатането ми е фундаментално... Прегледах сто хиляди неща по въпроса и никак не успях да си реша проблема...
Дано утре на отпочинала глава да измисля нещо
Re: C++Builder 5 - image в OLE формат
Качеството не би трябвало да се губи.
Поне за картинки с еднакви размери.
Опитай да оразмериш изображенията в базата така че да не ти се налага да ги "стречваш" в рипорта.Ако се получи добре, значи просто трябва да обмислиш вариант с векторна графика - мета файлове.
Поне за картинки с еднакви размери.
Опитай да оразмериш изображенията в базата така че да не ти се налага да ги "стречваш" в рипорта.Ако се получи добре, значи просто трябва да обмислиш вариант с векторна графика - мета файлове.