Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.23;
Скачать: [xml.tar.bz2];

Вниз

как крутить картинки в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.039 c
15-1196145164
still-let
2007-11-27 09:32
2007.12.23
Экспертные системы


2-1196253710
PASZLIB
2007-11-28 15:41
2007.12.23
Четность числа ?


15-1195585647
lookin
2007-11-20 22:07
2007.12.23
Непонятно - а чем телефон лучше песни?


15-1195739912
alsov
2007-11-22 16:58
2007.12.23
Сборка серверой части приложения на Oracle


6-1176119066
Мистик
2007-04-09 15:44
2007.12.23
Indy FTP!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский