AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte drehen

Ein Thema von Mischn · begonnen am 19. Sep 2006 · letzter Beitrag vom 20. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Mischn

Registriert seit: 16. Sep 2006
11 Beiträge
 
Delphi 2005 Personal
 
#1

Objekte drehen

  Alt 19. Sep 2006, 13:40
Ich möchte ein Spiel programmieren, in dem man ein Objekt, wie z.B: ein Image durch einen Tastendruck um einen bestimmten Winkel (um die eigene Achse) drehen kann. Wie soll ich das anstellen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Objekte drehen

  Alt 19. Sep 2006, 13:48
In dem du das Bild drehst oder verschiedene Bilder im gedrehten Zustand nimmst.
Markus Kinzler
  Mit Zitat antworten Zitat
Mischn

Registriert seit: 16. Sep 2006
11 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Objekte drehen

  Alt 19. Sep 2006, 13:52
Zitat von mkinzler:
In dem du das Bild drehst oder verschiedene Bilder im gedrehten Zustand nimmst.
Wie drehen?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Objekte drehen

  Alt 19. Sep 2006, 13:58
Zitat von Mischn:
Ich möchte ein Spiel programmieren, in dem man ein Objekt, wie z.B: ein Image durch einen Tastendruck um einen bestimmten Winkel (um die eigene Achse) drehen kann. Wie soll ich das anstellen?
Hi,
du gibst ehrlich gesagt etwas wenig Informationen raus. Ist ein Image ein Beispiel oder möchtest du mit einem Image arbeiten? Und wenn du mit einem Image arbeitest, was verstehst du dann unter einem Objekt? Möchtest du wirklich das gesamte Image drehen?

Was Spiele angeht, so werden die ja im Moment gerne für die Schnittstellen DirectX oder OpenGL geschrieben (greifen auf diese zurück). Diese bieten auch was 2D angeht jede Menge Funktionen, vorallem findest du hier schon alles zum Rotieren von Körpern.

Was das rotieren von Bildern (insbesondere Bitmaps) angeht, so musst du nur die Suche bemühen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Objekte drehen

  Alt 19. Sep 2006, 14:03
Hier im Forum suchenBitmap drehen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Objekte drehen

  Alt 19. Sep 2006, 14:14
Schau dir f+ür deinen Zweck lieber mal Bei Google suchenDelphiX an. Damit kann man Bilder sehr viel einfacher und CPU-Freundlicher drehen.
TImageSpriteEx beherbergt die eigenschaft "Angle" welche einfach verändert werden kann.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Objekte drehen

  Alt 19. Sep 2006, 14:37
in der gdi+ sind (sogar schnelle) drehroutinen drin.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Mischn

Registriert seit: 16. Sep 2006
11 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Objekte drehen

  Alt 19. Sep 2006, 18:42
OK, werd ich machen!
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Objekte drehen

  Alt 19. Sep 2006, 19:54
Hallo Mischn,

falls du am Anfang auf GDI+ und DelphiX verzichten möchtest, kannst du auch mit dem "alten" GDI eine Bitmap drehen:

Delphi-Quellcode:
// uses Math (SinCos)

// zeichnet eine verdrehte Bitmap auf einem Canvas
// aAngle ist der Drehwinkel im Uhrzeigersinn in Grad
// aOffsetX, aOffsetY gibt den Offset für das Zeichnen an

procedure DrawRotatedBitmap (aCanvas: TCanvas; aBitmap: TBitmap;
                             aAngle: Double; aOffsetX, aOffsetY: Integer);
var
  svMode: Integer;
  Mat, svMat: tagXFORM;
  si, co: Extended;
begin
  // aktuellen Zustand retten
  svMode := SetGraphicsMode(aCanvas.Handle, GM_ADVANCED);
  if (svMode = GM_ADVANCED) then
    GetWorldTransform(aCanvas.Handle, svMat);
  // Verschiebung in den Usprung
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := 1.0;
  Mat.em22 := 1.0;
  Mat.eDx := -(aOffsetX + aBitmap.Width / 2);
  Mat.eDy := -(aOffsetY + aBitmap.Height / 2);
  SetWorldTransform(aCanvas.Handle, Mat);
  // Verdrehung
  SinCos (aAngle * Pi / 180, si, co);
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := co;
  Mat.em12 := si;
  Mat.em21 := -si;
  Mat.em22 := co;
  ModifyWorldTransform(aCanvas.Handle, Mat, MWT_RIGHTMULTIPLY);
  // Zurückschieben
  FillChar (Mat, SizeOf(Mat), 0);
  Mat.em11 := 1.0;
  Mat.em22 := 1.0;
  Mat.eDx := (aOffsetX + aBitmap.Width / 2);
  Mat.eDy := (aOffsetY + aBitmap.Height / 2);
  ModifyWorldTransform(aCanvas.Handle, Mat, MWT_RIGHTMULTIPLY);
  // Bitmap zeichnen
  aCanvas.Draw(aOffsetX, aOffsetY, aBitmap);
  // alten Zustand wiederherstellen
  if (svMode = GM_ADVANCED) then
    SetWorldTransform(aCanvas.Handle, svMat)
  else
    SetGraphicsMode(aCanvas.Handle, svMode);
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#10

Re: Objekte drehen

  Alt 1. Nov 2006, 11:53
Wie funktioniert das Ganze mit PNG???

Habe schon versucht BMP.Assign := blabla, aber es funzt einfach nicht...
Danke
Tom
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz