Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.09.2010, 21:46
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию Оптимизация поворота (ускорение)

в общем написал я код, который поворачивает картинку, ускорял как мог, что получилось:

Код:
const da = 1;
var x_,y_,a: Real;
    x,y: Integer;
    cl,trcl: TColor;
    sina,cosa: Real;

begin
trcl:=Image1.Canvas.Pixels[0,0];
a:=pi/180*da;
while true do begin
sina:=sin(a);
cosa:=cos(a);
for x:=0 to Image1.Width-1 do
    for y:=0 to Image1.Height-1 do begin
      cl:=Image1.Canvas.Pixels[x,y];
      If cl<>trcl then begin
        x_:=(x-Image1.Width/2)*cosa-(y-Image1.Height/2)*sina+Image1.Width/2;
        y_:=(x-Image1.Width/2)*sina+(y-Image1.Height/2)*cosa+Image1.Height/2;
        Image2.Canvas.Pixels[Round(x_),Round(y_)]:=cl;
      end;
    end;
a:=a+pi/180*da;
Application.ProcessMessages;
end;
end.

ускорял как мог (синус и косинус только 1 раз считаю, не беру прозрачные пикселы) но все равно он вращает медленно, может у кого есть идеи как это ускорить?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:58.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025