colotoon |
Отправлено: 10.06.2006, 15:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
Всем привет!
Такой трабл:
С помощью TJPEGImage загружаю из ресурсов картинки и вывожу через canvas на TImage(авторазмер на всю форму)
Image1->Canvas->StretchDraw
Горизонтальные картинки отображаются нормально но вот вертикальные..
Блин, а вот когда зрузишь bitmap из ресурсов — все нормально (TImage: Stretch, Proportional)
из TJPEGImage я могу получить размер загруженной картинки, но вот как его использовать ума не приложу |
|
** Валерий |
Отправлено: 14.06.2006, 18:14 |
|
Не зарегистрирован
|
А как jpeg из ресурса в image загрузить? |
|
** colotoon |
Отправлено: 21.06.2006, 12:14 |
|
Не зарегистрирован
|
примерно так:
1. в .rc файле пишешь:
Kartinka RCDATA "1.jpg"
2. Потом создаешь переменную типа TJPEG и загружаешь в нее данные из ресурса.
3. Рисуешь содержимое переменной в TImage с помошью Canvas->Draw или Canvas->StretchDraw |
|
** Валерий |
Отправлено: 22.06.2006, 08:21 |
|
Не зарегистрирован
|
Я спрашивал как в jpeg из ресурса загрузить картинку или можно в поток. |
|
Gal |
Отправлено: 23.06.2006, 10:18 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 124
|
QUOTE |
Я спрашивал как в jpeg из ресурса загрузить картинку или можно в поток.
|
получи из ресурса картинку в bitmap, затем
CODE |
std::auto_ptr<TJPEGImage> Jpeg(new TJPEGImage());
Jpeg->Assign(bitmap);
|
не забудь
Отредактировано Gal — 23/06/2006, 10:20 |
|
ShibaOn |
Отправлено: 01.07.2006, 08:42 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
Я решал подобную проблему на MFC, мне требовалось выводить пропорционально отскэйленное изображение на статик, переписывать поленюсь
Вот, надеюсь поможет:
CODE |
CRect disrect = dis->rcItem;
int srcWidth = FImage->GetWidth();
int srcHeight = FImage->GetHeight();
float Relation1 = (float)disrect.Width()/disrect.Height();
float Relation2 = (float)srcWidth/srcHeight;
float WScale = (float)disrect.Width()/srcWidth;
float HScale = (float)disrect.Height()/srcHeight;
if (Relation2 >= Relation1) {
disrect.SetRect(0, 0, dis->rcItem.right, int(srcHeight*WScale));
disrect.OffsetRect(0, (dis->rcItem.bottom — dis->rcItem.top — disrect.Height())/2);
} else {
disrect.SetRect(0, 0, int(srcWidth*HScale), dis->rcItem.bottom);
disrect.OffsetRect((dis->rcItem.right — dis->rcItem.left — disrect.Width())/2, 0);
}
. . .
|
в disrect теперь храниться целевой ректангл, в него все и рисуешь
Отредактировано ShibaOn — 01/07/2006, 08:44
|
|