Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2004.02.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
1-53617
Александр
2004-02-07 12:58
2004.02.17
Как добится чтобы размер окна приложения...


14-53738
Думкин
2004-01-28 06:39
2004.02.17
С днем рорждения! 28 января.


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


4-53804
truntaev
2003-12-14 11:18
2004.02.17
Как программно позиционировать мышь и нажимать ее кнопки на р.ст.


6-53671
Rem_
2003-12-14 02:07
2004.02.17
Помогите пожалуйтса, как мне написать свой почтовый сервер?