![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод изображения в GDI+
Vetal © (2008-11-25 22:16:00)Здравствуйте, есть вопросик. Не могу понять, почему при двух способах вывода:
var
FBitmap: TGPBitmap;
Graph: TGPGraphics;
i: integer;
1)
Graph.SetInterpolationMode(InterpolationModeNearestNeighbor);
Graph.DrawImage(FBitmap, 0, 0, FBitmap.GetWidth, FBitmap.GetHeight);
for i := 0 to 10 do
Graph.DrawImage(FBitmap, 0, 0, FBitmap.GetWidth*0.2, FBitmap.GetHeight*0.2);
2)
Graph.SetInterpolationMode(InterpolationModeNearestNeighbor);
for i := 0 to 10 do
Graph.DrawImage(FBitmap, 0, 0, FBitmap.GetWidth*0.2, FBitmap.GetHeight*0.2);
второй вариант работает раз в 20 быстрее.
Vetal (2008-11-28 20:14:00) [1]Если загрузть изображение и выводить его в уменьшенном размере, то по ходу при каждом выводе объект Graphics создаёт промежуточный буфер, что выливается в приличные тормоза при больших растрах. Если сначала вывести изображение в нормальном масштабе или в увеличенном, то при дальнейше его выводе любым размером всё работает быстро.
brother (2008-11-28 09:22:00) [2]> 1)
> Graph.SetInterpolationMode(InterpolationModeNearestNeighbor)
> ;
> Graph.DrawImage(FBitmap, 0, 0, FBitmap.GetWidth, FBitmap.GetHeight)
> ;
> for i := 0 to 10 do
> Graph.DrawImage(FBitmap, 0, 0, FBitmap.GetWidth*0.2,
> FBitmap.GetHeight*0.2);
>
> 2)
> Graph.SetInterpolationMode(InterpolationModeNearestNeighbor)
> ;
> for i := 0 to 10 do
> Graph.DrawImage(FBitmap, 0, 0, FBitmap.GetWidth*0.2,
> FBitmap.GetHeight*0.2);
и что это за "обрезки" кода?
Vetal (2008-11-25 23:48:00) [3]Точнее не второй, а первый.