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

Вниз

Увеличение картинки   Найти похожие ветки 

 
Romio   (2003-10-09 22:31) [0]

дравствуйте! У меня такая проблема! Мне нужно загрузить картинку (jpeg) в программу, а потом
мне нужно ее увеличить или уменьшить программно, т. е. как в графическом редакторе при
нажатии "+" или "-".
Код у меня есть, а проблема заключается в том, что когда я загрузил картинку она работает
нормально не тормозит, а после того как я нажимаю "+" или "-" она начинает очень сильно
тормозить. Как мне избавится от этого?


 
крот   (2003-10-10 10:10) [1]

Как осуществляется изменение размеров картинки, код какой?


 
BOA_KAA   (2003-10-10 11:28) [2]


> она начинает очень сильно
> тормозить.

Нехватка памяти, держу пари


 
Romio   (2003-10-10 23:15) [3]

Это код загружает файл.

procedure TForm1.Button1Click(Sender: TObject);
var
jp : TJPEGImage;
begin
Image.AutoSize := True;
jp := TJpegImage.Create;
Image.Picture.LoadFromFile("163.jpg");
Image.AutoSize := False;
jp.Free;
end;


Этот код уменьшает картинку на 10%.

procedure TForm1.Button2Click(Sender: TObject);
var
scale : Extended;
begin
scale := 9/10;
Image.Width := Round( Image.Width * scale );
Image.Height := Round( Image.Height * scale );
Image.Stretch := True;
Image.Update;
end;


 
Fenik   (2003-10-11 01:56) [4]

Надо в начале переводит в растр (Bitmap), а затем выводит на экран с увеличением или уменьшением (StretchBlt).
Выкинуть этот ТImage подальше.


 
Vladislav   (2003-10-13 09:24) [5]

http://www.g32.org


 
Romio   (2003-10-13 19:18) [6]

Ну хоть кто нибудь может дать хороший ответ?????????????????


 
Romio   (2003-10-13 21:53) [7]

Ну хоть кто нибудь может дать хороший ответ?????????????????


 
SammIk   (2003-10-13 21:55) [8]

Fenik>>> Тему говорит


 
Думкин   (2003-10-14 05:08) [9]


> procedure TForm1.Button1Click(Sender: TObject);
> var
> jp : TJPEGImage;
> begin
> Image.AutoSize := True;
> jp := TJpegImage.Create;
> Image.Picture.LoadFromFile("163.jpg");
> Image.AutoSize := False;
> jp.Free;
> end;


Это не тормоза, конечно, но что-то тут не так. JP - Выглядит сиротой. Видимо, код списан неверно. Одна строка ошибочна и одна отсутствует?

> [4] Fenik © (11.10.03 01:56)
Можно так. Только StretchBlt будет приемлимо по качеству работать в системах НТ при установке соответсвующей моды.

> [5] Vladislav © (13.10.03 09:24)
А вот это - верно. Там имеется 5 способов изменения размеров изображения - вполне быстрые.

> [6] Romio (13.10.03 19:18)
Так не надо. А то отвечать никто не будет. Все уже сказано выше. Смотри и увидишь.


 
FH   (2003-10-14 10:38) [10]

прислушайтесь к Vladislav"у! дело говорит


 
Fenik   (2003-10-14 17:45) [11]

Такая простая задача - загрузить и вывести с масштабированием.
А вы в крайности бросаетесь (g32).

Погрузка рисунка из файла:
procedure LoadPictureToBitmap(Bitmap: TBitmap; const FileName: string);
var Pic: TPicture;
begin
if not FileExists(FileName) then Exit;
Pic := TPicture.Create;
try
Pic.LoadFromFile(FileName);
with Bitmap do begin
Width := Pic.Graphic.Width;
Height := Pic.Graphic.Height;
PixelFormat := pf24Bit;
PatBlt(Canvas.Handle, 0, 0, Width, Height, WHITENESS);
Canvas.Draw(0, 0, Pic.Graphic);
end;
finally
Pic.Free;
end;
end;


Вывод на форму или на панель (!), используя StretchBlt(GetDC(Handle).... .... Bitmap.Canvas.Handle...) или BitBlt (если масштаб 1:1).
Можно конечно выводить на какого-нибудь потомка TGraphicControl типа TPaintBox, но я бы не советовал. Это не есть гуд.

>Думкин © (14.10.03 05:08) [9]
>Можно так. Только StretchBlt будет приемлемо по качеству работать в системах НТ при установке соответствующей моды.

Не знаю, как в НТ. Но в 9х/Ме работает нормально.
Есть недоделанный пример: http://fenik.nm.ru/TestDP.zip
Можете посмотреть, насколько приемлемо использование стандартных средств.


 
Mihey   (2003-10-14 21:44) [12]

> А вы в крайности бросаетесь (g32).

> используя StretchBlt(GetDC(Handle)....

Плохое качество, рано или поздно проект выйдет за рамки апгрейдов стандартными средствами.


 
Fenik   (2003-10-14 22:12) [13]

>Mihey © (14.10.03 21:44) [12]
>Плохое качество, рано или поздно проект выйдет за рамки апгрейдов стандартными средствами.

Вот когда выйдет...
g32 - это крайность. Для простой программы явно не подходит.


 
Думкин   (2003-10-15 05:09) [14]


> [13] Fenik © (14.10.03 22:12)
> Вот когда выйдет...
> g32 - это крайность. Для простой программы явно не подходит.

А кто сказал, что не вышло? Что значит простой проект?
В 9*/Ме - качество плохое и это главное. Возьми качественную фотку и сожми ее раз в 10 - получится жуть.

И примеров не надо. У нас проект заврачивали пока я не сделал качественное масштабирование.



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

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

Наверх




Память: 0.48 MB
Время: 0.009 c
3-53406
Layner
2004-01-26 16:41
2004.02.17
Можно ли узнать время выполнения SQL запроса в Access из Delphi?


8-53659
kvp
2003-10-20 12:51
2004.02.17
Повернуть элипс на произвольный угол


4-53824
FeRR
2003-12-15 07:52
2004.02.17
Wh_Mouse & MouseHookStruct


11-53443
Boguslaw
2003-05-29 00:00
2004.02.17
One crazy idea...


9-53350
Norlin
2003-08-07 02:02
2004.02.17
Вопрос ПО ПОСТРОЕНИЮ ИГР!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский