Форум: "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