Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

как крутить картинки в delphi?   Найти похожие ветки 

 
jeet   (2007-11-15 09:45) [0]

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


 
Jeer ©   (2007-11-15 09:54) [1]

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


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


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

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


 
Jeer ©   (2007-11-15 10:16) [3]

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

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


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

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


 
Dimaxx ©   (2007-11-15 10:30) [5]

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


 
Jeer ©   (2007-11-15 11:39) [6]


> jeet   (15.11.07 10:19) [4]


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

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


 
antonn ©   (2007-11-16 13:13) [7]

внимание, велосипед! %)
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;


 
homm ©   (2007-11-16 13:18) [8]

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

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


 
Jeer ©   (2007-11-16 15:56) [9]


> homm ©   (16.11.07 13:18) [8]


Ты пообщайся с сотней студентов за год, телепатор настроишь как у Вольфа Мессинга (был такой теле*).


 
DmT   (2007-11-27 15:47) [10]

А теперь изобритите велосипедII, чтобы вращался не относительно центра изображения, а в трех измерениях(хотябы относительно прямой лежащей вертикально по центру изображения).


 
qq   (2007-11-27 15:55) [11]


> А теперь изобритите велосипедII

ты сначала вопросы научись формулировать
потом командовать будешь, если доживешь


 
@!!ex ©   (2007-11-27 16:20) [12]

> [10] DmT   (27.11.07 15:47)

5 баксов


 
DmT   (2007-11-27 17:51) [13]


> ты сначала вопросы научись формулировать

А что не правильно сформулированно? Научись довать правильную критику ;)


 
@!!ex ©   (2007-11-27 17:53) [14]

> А что не правильно сформулированно?

Ни панятно как крутить.
Понимаем, что вращение по третьей оси - есть фэйк?
ибо у нас всеже моник плоцкий.
Соответственно ваш вопрос не корректен тем, что там не указывается, какой конкретно алгоритм процеирования использовать.


 
clickmaker ©   (2007-11-27 19:45) [15]


> jeet   (15.11.07 09:45)
> как крутить картинки в delphi?

avi-файл + TAnimate
при наличии нужного кодека, можно будет крутить даже порники


 
antonn (work)   (2007-11-27 19:53) [16]


> Ни панятно как крутить.

Perspective texture mapping :)

http://desksoft.ru/index.php?forum=13&th=67


 
oxffff ©   (2007-11-27 19:56) [17]


> jeet   (15.11.07 09:45)  
> как крутить картинки в delphi?


см. GDI+

Point destinationPoints[] = {
  Point(200, 20),   // destination for upper-left point of original
  Point(110, 100),  // destination for upper-right point of original
  Point(250, 30)};  // destination for lower-left point of original
Image image(L"Stripes.bmp");
// Draw the image unaltered with its upper-left corner at (0, 0).
graphics.DrawImage(&image, 0, 0);
// Draw the image mapped to the parallelogram.
graphics.DrawImage(&image, destinationPoints, 3);


 
clickmaker ©   (2007-11-27 20:01) [18]


> [15] clickmaker ©   (27.11.07 19:45)
>
> > jeet   (15.11.07 09:45)
> > как крутить картинки в delphi?
>
> avi-файл + TAnimate
> при наличии нужного кодека, можно будет крутить даже порники

нет, порники не получится, это я спутал
Но крутить все равно можно
Кстати, где-то на зеленых полях Тырнета лежит исходник на дельфи функции RotateBitmap. Google в помощь


 
@!!ex ©   (2007-11-27 20:31) [19]

> Perspective texture mapping :)

Почему это так?
Модет там не перспектива подразумеваеться?


 
DmT   (2007-11-27 22:29) [20]

Да я почти это и имел ввиду. только там картинка повернута относительно левой стороны(относительно нас), а я бы хотел относительнопрмой направленной вертикально(сверху_вниз) и проходящей через центр изображения.


 
antonn ©   (2007-11-27 22:53) [21]


> Почему это так?
> Модет там не перспектива подразумеваеться?
>

так выдал мой телепатор:)


> DmT   (27.11.07 22:29) [20]

там матрица, по ней и изменяй куда надо...


 
vegarulez ©   (2007-11-28 09:56) [22]

Эта программа плавно поворачивает изображение на один радиан.

uses Math;

procedure TForm1.Button1Click(Sender: TObject);
var
 bm, bm1: TBitMap;
 x, y: integer;
 r, a: single;
 xo, yo: integer;
 s, c: extended;
begin
 bm := TBitMap.Create;
 bm.LoadFromFile("ex.bmp");
 xo := bm.Width div 2;
 yo := bm.Height div 2;
 bm1 := TBitMap.Create;
 bm1.Width := bm.Width;
 bm1.Height := bm.Height;
 a := 0;
 repeat
   for y := 0 to bm.Height - 1 do begin
     for x := 0 to bm.Width - 1 do begin
       r := sqrt(sqr(x - xo) + sqr(y - yo));
       SinCos(a + arctan2((y - yo), (x - xo)), s, c);
       bm1.Canvas.Pixels[x,y] := bm.Canvas.Pixels[
         round(xo + r * c), round(yo + r * s)];
     end;
     Application.ProcessMessages;
   end;
   Form1.Canvas.Draw(xo, yo, bm1);
   a := a + 0.05;
   Application.ProcessMessages;
 until Form1.Tag <> 0;
 bm.Destroy;
 bm1.Destroy;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Form1.Tag := 1;
end;


 
Рамиль ©   (2007-11-28 11:14) [23]


> vegarulez ©   (28.11.07 09:56) [22]

А ты в курсе, сколько это будет выполняться?

И чем неугодила SetWorldTransform? Зачем столько велосипедов?


 
DmT   (2007-12-01 15:42) [24]

А что это?


 
Denis__ ©   (2007-12-01 15:48) [25]


> @!!ex ©   (27.11.07 16:20) [12]
> > [10] DmT   (27.11.07 15:47)
>
> 5 баксов

@!!ex, можно вопрос? А что ты по мелочам подрабатываешь(5,10 Баксов)? Наверняка же зарабатываешь хорошо на играх :)


 
@!!ex ©   (2007-12-01 16:38) [26]

> [25] Denis__ ©   (01.12.07 15:48)

Мне еще ни одного заказа на 5 баксов не дали. :)
Кому то бесплатно помогаю, кому то никак не помогаю.
А 5 баксов пишу для того, чтобы до авторов дошло, что их задачи бесплатно делать никто не нанимался, а то обычно "сделайте мне! не сделали? Да вы все лохи, зачем здесь сидите"


 
Anatoly Podgoretsky ©   (2007-12-01 16:40) [27]

> Denis__  (01.12.2007 15:48:25)  [25]

Старушка 20 копеек, пять старушек рубль.


 
antonn ©   (2007-12-01 23:09) [28]


> @!!ex ©   (01.12.07 16:38) [26]

Ага, типа того в Потрепаца один Живописец хотел :)
Кстати, зачастую "неподготовившись" перевести что 5 баксов, что 20 - однофигственно сложновато.



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
8-1171310423
man-1982
2007-02-12 23:00
2007.12.23
как из двух изображений сделать одно


2-1196164481
SkyN
2007-11-27 14:54
2007.12.23
TStringList.QuoteChar


2-1196342254
NaRuTo
2007-11-29 16:17
2007.12.23
Можно ли поменять цвет шрифта TRadioGroup


15-1196087452
DVM
2007-11-26 17:30
2007.12.23
Глюк с дизайнером меню в Delphi 2007. Это только у меня? Или нет?


3-1187492065
ChaoX
2007-08-19 06:54
2007.12.23
TBlobField и приведение типов