Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];

Вниз

Пропорциональный ресайз картинки под Imagelist и DrawGrid   Найти похожие ветки 

 
pavelkq   (2009-01-11 09:48) [0]

На форме имеются 2 компонента Imagelist и DrawGrid. Через диалог выбираю графический файл и масштабирую функцией под размеры ячейки в DrawGrid (создаю миниатюры).
Function ResizeBitmap(bmp: TBitmap; nw, nh: Integer):TBitmap;
begin
 Result:=TBitmap.Create;
 Result.Width:=nw;
 Result.Height:=nh;
 Result.Canvas.StretchDraw(Rect(0,0,nw,nh),bmp);
end;

Размер ячейки 80х60, т.е. пропроция 4х3. Когда картинки с теми же пропорциями, то картинка масштабируется красиво. Но если картинка имеет другие пропорции, то она жутко растягивается. Так же эта картинка (миниатюра) записывается в Imagelist, размеры которого тоже строго определены. Как сделать так, чтобы картинка дополнялась чистыми полями по краям до правильных пропорций?
P.S. Правильно ли я инициализирую результат и где его освободить?


 
KSergey ©   (2009-01-11 10:48) [1]

Можно определить пропорции исходного изображения и рисовать в координатах в соответствии с ними, а не тупо переданный размер.

> P.S. Правильно ли я инициализирую результат и где его освободить?

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


 
pavelkq   (2009-01-11 12:13) [2]

Ну, допустим, я понял, что пропорция переданного изображения 3х4, т.е. оно вертикальное. Тогда изменение должно произойти  до (nh*3/4) x 60. При nh=80 получаем размеры 45х60. Но при вставке этого изображения в Imagelist и DrawGrid размером 80х60 вываливается ошибка о несоответствии размеров изображения. Посему, надо как-то дополнить недостающую ширину до 80 пустыми полями или прпросить их не ругаться.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.071 c
15-1229898775
[Ждущий]
2008-12-22 01:32
2009.02.22
Долго открывается список с локальными дисками


15-1229611134
Добежал
2008-12-18 17:38
2009.02.22
На что заменить критические секции в Vista?


2-1231843398
031178
2009-01-13 13:43
2009.02.22
Автофильтр


15-1229712539
DillerXX
2008-12-19 21:48
2009.02.22
Подскажите утилиту для массового реплейса в файлах


15-1230019747
Andy BitOff
2008-12-23 11:09
2009.02.22
Интернет враг работы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский