Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как крутить картинки в delphi? [D7, WinXP]


Страницы:   1 2

jeet ©   (2007-11-15 09:45:00) 

как крутить картинки в delphi?


homm   (2007-11-16 13:18:00) [21]

> [3] Jeer ©   (15.11.07 10:16)
> Это значит, что операция поворота, описанная математическим
> языком не зависит от языка программирования:

Вот это телепаторище!!! :-0
Мой даже намека не дал, что речь идет о повороте изображения.


antonn   (2007-11-16 13:13:00) [22]

внимание, велосипед! %)
procedure CopyRotateTransparentBrush(_B_in,_B_out: TBitmap; _x,_y,centerX,centerY:integer; trColor:Tcolor; _angle: Double);
var cosRadians,_Rad,sinRadians : Double;
 x,y,x_cor,y_cor,x_corS,y_corS,inXOut,inXPr,inXRotated,inYOut,inYPr,inYRotated: Integer;
 RowOut, RowIn: PRGBArray;
 rc1, bc1, gc1:byte;
 _w,_h:integer;
begin
 _Rad:=_angle; sinRadians:=Sin(_Rad); cosRadians:=Cos(_Rad);
 _w:=_B_in.Width;  _h:=_B_in.Height;
 if _x<0 then x_corS:=abs(_x) else x_corS:=0;
 if _y<0 then y_corS:=abs(_y) else y_corS:=0;
 if (_x+_w)>_B_out.Width then x_cor:=_x+_w-_B_out.Width else x_cor:=0;
 if (_y+_h)>_B_out.Height then y_cor:=_y+_h-_B_out.Height else y_cor:=0;
 rc1:=GetRValue(trColor); gc1:=GetGValue(trColor); bc1:=GetBValue(trColor);
 for x:=_h-1-y_cor downto y_corS do begin
   RowIn:=_B_out.Scanline[x+_y]; inXPr:=2*(x-centerY)+1;
   for y:=_w-1-x_cor downto x_corS do begin
     inYPr:=2*(y-centerX)+1;
     inYRotated:=Round(inYPr*CosRadians-inXPr*sinRadians);
     inXRotated:=Round(inYPr*sinRadians+inXPr*cosRadians);
     inYOut:=(inYRotated-1) div 2 + centerX; inXOut:=(inXRotated-1) div 2 + centerY;
     if (inYOut>=0)and(inYOut<=_w-1)and
     (inXOut>=0)and(inXOut<=_h-1) then begin
       RowOut:=_B_in.Scanline[inXOut];
    if not((RowOut[inYOut].rgbtRed=rc1)and(RowOut[inYOut].rgbtGreen=gc1)and(RowOut[inYO ut].rgbtBlue=bc1)) then
       RowIn[y+_x] := RowOut[inYOut];
     end;
   end;
 end;
end;


Jeer   (2007-11-15 11:39:00) [23]


> jeet   (15.11.07 10:19) [4]


Почти также, как и на мат.языке

x2 := x1*Cos(A) - y1*Sin(A);
y2 := x1*Sin(A) + y1*Cos(A);


Dimaxx   (2007-11-15 10:30:00) [24]

Мда. Начни лучше с чего-нить попроще тогда...


jeet   (2007-11-15 10:19:00) [25]

это понятно
как это в делфи записать


Jeer   (2007-11-15 10:16:00) [26]

Это значит, что операция поворота, описанная математическим языком не зависит от языка программирования:

x2 = x1*CosA - y1*SinA
y2 = x1*SinA + y*CosA


jeet   (2007-11-15 10:05:00) [27]


> Так же, как и не в Delphi.

что это значит?


Jeer   (2007-11-15 09:54:00) [28]

Так же, как и не в Delphi.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо