Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 21:04

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: SDL_BLITSURFACE
BeitragVerfasst: Do Feb 14, 2008 01:48 
Offline
DGL Member

Registriert: Di Feb 05, 2008 02:39
Beiträge: 3
Hallo!
Ich mache gerade meine ersten Gehversuche mit SDL.
Könnte mir vielleicht jemand die Funktion von SDL_BLITSURFACE genauer erklären ich verstehe die nicht ganz.

Nach einigem rumprobieren kam ich schließlich hierzu:
Code:
  1.  
  2. program project1;
  3.  
  4. {$mode objfpc}{$H+}
  5.  
  6. uses
  7.   SDL, {SDL_EVENTS,} SysUtils;
  8.  
  9. var
  10.   screen, picture: pSDL_SURFACE;
  11.   rect: TSDL_RECT;
  12.   MyEvent: pSDL_EVENT;
  13.   Stop : Boolean;
  14.  
  15. begin
  16.   if ( SDL_INIT( SDL_INIT_VIDEO ) > 0 ) then
  17.   begin
  18.     Halt;
  19.   end;
  20.  
  21.   screen := SDL_SETVIDEOMODE( 900, 900, 32, SDL_SWSURFACE );
  22.   if screen = NIL then halt;
  23.  
  24.   picture := SDL_LOADBMP( 'C:\bitmap.bmp' );
  25.   if picture = nil then halt;
  26.  
  27.   New( MyEvent );
  28.  
  29.   rect.x := 100;
  30.   rect.y := 50;
  31.  
  32.   Stop := false;
  33.  
  34.   while Stop = false do
  35.   begin
  36.     if ( SDL_POLLEVENT( MyEvent ) = 1 ) then
  37.     begin
  38.       case MyEvent^.type_ of
  39.         SDL_KEYDOWN:
  40.         begin
  41.           if MyEvent^.key.keysym.sym = 273 then rect.y := rect.y - 10;//Up
  42.           if MyEvent^.key.keysym.sym = 274 then rect.y := rect.y + 10;//Down
  43.           if MyEvent^.key.keysym.sym = 275 then rect.x := rect.x + 10;//Right
  44.           if MyEvent^.key.keysym.sym = 276 then rect.x := rect.x - 10;//Left
  45.           if MyEvent^.key.keysym.sym = 27 then Stop := true;//Exit
  46.         end;
  47.       end;
  48.  
  49.     end;
  50.     SDL_BLITSURFACE( picture, nil, screen, @rect );
  51.     SDL_FLIP( screen );
  52.   end;
  53.  
  54.   Dispose( MyEvent );
  55.   SDL_FREESURFACE( screen );
  56.   SDL_FREESURFACE( picture );
  57.   SDL_QUIT;
  58. end.  
  59.  


Wenn ich das Bild bewege bleibt trotzdem ein Teil des Bildes auf dem Hintergrund sichtbar, hab ich da was mit dem refreshen falsch gemacht?

PS: Benutze Lazarus + JEDI-SDL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 14, 2008 12:48 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Es bleibt der Teil erhalten der nicht refreshed wurde oder?
BlitSurface nimmt einfach das Bild und klebt es auf die angegebene Stelle. Die restlichen Stellen werden ignoriert und behalten daher die alten Informationen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]