![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как крутить картинки в delphi? [D7, WinXP]
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.