Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.08.2014, 14:17
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание Проблемы с Stretch у компонента Image

Всем добрый день
- столкнулся с такой проблемой не понимаю почему так происходит и как это исправить

Значит так - на форме стоит компонент Image
когда в него из буфера ставишь картинку и свойство Stretch делаешь активным картинка получается безобразным



Нашел в сети другой компонент Image32 у которого все ок с свойством Stretch но у него нашлась проблема когда мне понадобился изменение размера файла в зависимости от Image.width Image.height

Код:
bmp: TBitmap;
jpeg: TJPEGImage;
begin
image:= TJPEGImage.Create;
bmp:= TBitmap.Create;
jpeg:= TJPEGImage.Create;
BMP.Width:= Image321.Width;
BMP.Height:=Image321.Height;
with bmp.Canvas do
StretchDraw(ClipRect, ТGraphic); //Вот тут проблема так 
jpeg.Assign(bmp);                                           //как у компонента нету
jpeg.CompressionQuality:=80;                           //класса TGraphic
jpeg.Compress;
jpeg.SaveToFile('D:\111.jpg');
С cтандартным компонентом Delphi Image писали так
Код:
StretchDraw(ClipRect, image1.picture.graphic);
и все работало - а как быть тут??

Посоветуйте что нибудь
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #2  
Старый 11.08.2014, 14:25
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

TBitmap - наследник TGraphic, поэтому

10 StretchDraw(ClipRect, bmp);
Ответить с цитированием
  #3  
Старый 11.08.2014, 14:31
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание

Цитата:
Сообщение от icWasya
TBitmap - наследник TGraphic, поэтому

10 StretchDraw(ClipRect, bmp);

Не получится - результат просто белая картинка...так как bmp пустой
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #4  
Старый 11.08.2014, 16:21
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А где сама картинка находится?
В Image321?
А что у него есть вместо TGraphic?
Ответить с цитированием
  #5  
Старый 11.08.2014, 20:17
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание

Цитата:
Сообщение от icWasya
А где сама картинка находится?
В Image321?

Картинка вставляется в него из буфера
Код:
Image321.Bitmap.Assign(Clipboard);

потом нужно эту картинку сохранить в размерах Image321 (высота картинки высота компонента - ширина картинки в ширине компонента)

Цитата:
Сообщение от icWasya
А что у него есть вместо TGraphic?
Если ты имеешь ввиду заменитель под другим названием то я весь список проверил там ничего подходящего не нашел
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #6  
Старый 11.08.2014, 22:07
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 559
Версия Delphi: XE5
Репутация: 18
Восклицание

Вот решение - насколько это глупо не звучало все равно скажу
- для решения достаточно было взглянуть в исходный код библиотеки
Код:
var
bmp32: TBitmap32;
jpeg: TJPEGImage;
bmp : TBitmap;
begin
bmp32:= TBitmap32.Create;
bmp32.Assign(image321.Bitmap);
jpeg:=TJPEGImage.Create;
BMP32.Width:=IMAGE321.Width;
BMP32.Height:=IMAGE321.Height;
image321.Bitmap.DrawTo(bmp32, bmp32.BoundsRect);
bmp := TBitmap.Create;
bmp.Assign(bmp32);
bmp.PixelFormat:= pf24bit;
jpeg.Assign(bmp);
jpeg.CompressionQuality:=50;
jpeg.Compress;
jpeg.SaveToFile('D:\a1.jpg');
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter