Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

1

05.12.2008, 21:08

2d grafik drehen um gewissen Grad

kann man irgendwie in sdl und c++ die 2d grafik, die ich geladen habe um einen gewissen Grad drehen oder muss ich in paint für jeden einzelnen Grad ein neues bild zeichnen.....
New Project: Operation CityRacer

2

05.12.2008, 22:18

Bei SDL kannst du SDL_gfx verwenden, das musst du allerdings separat downloaden.

Vielleicht kannst du auch mal einen Blick auf SFML werfen, das ist in C++ programmiert und unterstützt Translationen, Rotationen, Scrolling, Einfärbung, Skalierung etc. auch nativ.

Anonymous

unregistriert

3

05.12.2008, 22:41

Natives rotieren (in GDI):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
HBITMAP RotateBmp(HWND hWnd, HBITMAP hBmp, INT Winkel) {
  HDC hDC;
  HDC hBmpDC;
  HDC hRotatedBmpDC;
  HBITMAP hRotatedBmp;
  COLORREF cv;
  int x1,y1,x2,y2;
  double w;

  hDC=GetDC(hWnd);
  hBmpDC=CreateCompatibleDC(hDC);
  hRotatedBmpDC=CreateCompatibleDC(hDC);
  hRotatedBmp=CreateCompatibleBitmap(hDC, 128, 64);
  SelectObject(hBmpDC, hBmp);
  SelectObject(hRotatedBmpDC, hRotatedBmp);
  w=DegToRad(Winkel);
  for(y1=0;y1<64;y1++) {
    for(x1=0;x1<128;x1++) {

      x2=(INT)((x1-64)*cos(w)-(y1-32)*sin(w)+64);
      y2=(INT)((x1-64)*sin(w)+(y1-32)*cos(w)+32);

      if(x2>=0&&x2<128&&y2>=0&&y2<64) {
        cv=GetPixel(hBmpDC, x2, y2);
      } else {
        cv=0;
      }
      SetPixel(hRotatedBmpDC, x1, y1, cv);
    }
  }
  DeleteDC(hBmpDC);
  DeleteDC(hRotatedBmpDC);
  ReleaseDC(hWnd, hDC);
  return(hRotatedBmp);
}

Easy ;)

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

4

07.12.2008, 10:58

ist der code nicht für eine win32 anwendung, da ich ja in der konsole arbeite oder geht des auch mit dem Hdc.....?
New Project: Operation CityRacer

Anonymous

unregistriert

5

07.12.2008, 11:39

Nexxtron
Ob es nun mit GDI arbeitet, mit DirectDraw, mit SDL oder sonst was ist doch um es mal auf gut Deutsch zu sagen: Scheiß egal. Die Technik und Vorgehensweise ist immer gleich. Das wäre ja ein Garaus für die Informatik wenn man für jede API etwas neues lernen müsste um das selbe Ergebnis zu bekommen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

07.12.2008, 11:40

Nexus hat doch schon gesagt, schau dir SDK_gfx an: http://www.ferzkopp.net/joomla/content/view/19/14/
@D13_Dreinig

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

7

13.12.2008, 15:12

hab jetzt ein problem bei dem SDL_gfx hab ne so ne funktion gemacht die ich aufrufen muss um mein teil zu drehen nur hab keine ahnung was in die paramater reinkommt, vorallem beim ersten hab ich keine ahnung :cry: ... hier mal code

C-/C++-Quelltext

1
2
3
4
void sprite::roto()
{
    SDL_Surface * rotozoomSurface (SDL_Surface *src, double angle, double zoom, int smooth);
}


kann mir vllt. wer erklären wie ich des auch reinschreiben muss in funktion oder mir felht nich der name der klassenfunktion ein^^ :o

und wenn ich so wie jetzt kompillieren will kommt der Fehler

C-/C++-Quelltext

1
c:\programme\microsoft visual studio\vc98\include\math.h(514) : error C2894: Vorlagen koennen nicht mit 'C'-Bindung deklariert werden
New Project: Operation CityRacer

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

8

09.04.2009, 11:28

auch wenn der thread schon älter ist, da ich mich selbst demletzt an einer drehung unter SDL versucht habe hier ein kleiner Hinweis:

@unsigned long:
in deinem code hat sich ein Fehler eingeschlichen. du hast bei get und putpixel die Koordinaten vertauscht, schliesslich willst du ja die Farben der ursprünglichen Koordinaten auf die neuen Koordinaten mappen. Ausserdem nimmst du für das rotatedBMP die gleiche Bildgröße an. bei unterschieden der width und heigth des ursprungsbildes werden dabei allerdings manche pixel aus dem dargestellten bereich gedreht und dann entsprechend nicht angezeigt. einfacher vorschlage wäre hier die groesse des rotatedBMPs auf width2=height2=diagonale des ursprungsbildes zu setzen. so wird sichergestellt dass auch wirklich das komplett gedrehte bmp dargestellt wird. die umrechnung muss dann leicht abgeändert werden. (siehe code). mit diesen änderungen funktioniert die drehung bei mir bisher sehr gut.
gruss
physX

Zitat von »"unsigned long"«

Natives rotieren (in GDI):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  for(y1=0;y1<height1;y1++) {
    for(x1=0;x1<width1;x1++) {

      x2=(INT)((x1-width1 /2)*cos(w)-(y1-height1 /2)*sin(w)+width2 /2);
      y2=(INT)((x1-widht1 /2)*sin(w)+(y1-height1 /2)*cos(w)+heigth2 /2);

      if(x2>=0&&x2<width2&&y2>=0&&y2<heigth2) {
        cv=GetPixel(hBmpDC, x1, y1);
      } else {
        cv=0;
      }
      SetPixel(hRotatedBmpDC, x2, y2, cv);   }
  }
  DeleteDC(hBmpDC);
  DeleteDC(hRotatedBmpDC);
  ReleaseDC(hWnd, hDC);
  return(hRotatedBmp);
}

Easy ;)


bold geht im code modus nicht und fehler im code korrigiert

Werbeanzeige