  | 
					
						Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!   
						
						
					 | 
				 
			 
			 
	
		| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen   | 
	 
	
	
		| Autor | 
		Nachricht | 
	 
	
		Progger_X Mr. Lagg
 
  Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
  | 
		
			
				 Verfasst am: 12.06.2005, 17:47    Titel: Doublebuffering?? | 
				     | 
			 
			
				
  | 
			 
			
				Hallo. Ich habe gerade begonnen, ein neues Programm in FB zu schreiben. Das ist der Code:
 
 
 	  | Code: | 	 		  
 
screen 9,,0,1
 
CLS
 
e=0
 
do
 
    screen 9,,1-seite,seite
 
    seite=1-seite
 
    if Inkey$=CHR$(27) then e=1
 
    loop until e=1 | 	  
 
 
Aber wenn ich ihn starte, starten sich auf meinem Computer immer unterschiedlich große DOS Fenster, und am schluss muss ich ihn neu starten um da raus zu kommen. Was ist in dem Code falsch? | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Stormy
 
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
  | 
		 | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Progger_X Mr. Lagg
 
  Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
  | 
		
			
				 Verfasst am: 12.06.2005, 17:59    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Danke. Hab das jetzt so:
 
 
 	  | Code: | 	 		  
 
screen 9,16,2,&H1   
 
e=0
 
do
 
    SCREENCOPY 
 
    GETMOUSE x, y,, buttons
 
    if Inkey$=CHR$(27) then e=1
 
    loop until e=1 | 	  
 
 
2 Fragen habei ich dazu:
 
 
1. Wie stelle ich dann eine BMP Grafik auf dem Bildschirm dar?
 
2. Was bringt "SCREENCOPY"? | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Mecki Igel
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
  | 
		
			
				 Verfasst am: 12.06.2005, 18:17    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Wenn du nicht weißt, was ein Befehl bewirkt, benutze doch die Befehlsreferenz-Suche  
 
 
Und schon findet sich  die Antwort    
 
 
Übrigens sind in den Buchstabenauflistungen die unbekannten Befehle jetzt kursiv geschrieben - ich habe die Ref. heute geupdatet..
 
 
Ach: und bei Screencopy solltest du schon die FromPage- und ToPage-Parameter angeben!
 
 
Eine Bitmap zeigst du an mit 	  | Code: | 	 		  DIM image(Dateigroesse) AS UBYTE
 
 BLOAD "image.bmp", VARPTR(image(0))
 
 PUT (0,0), image,PSET | 	  
 
Grüßle,
 
 Mecki _________________ » Yodl.de: So sucht man gestern.  
 
» Geld verdienen im Netz + ICQ.
 
» Firefox!
 
» 100€ zu gewinnen
 
» FreeBASIC.de | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		dreael Administrator
  
  Anmeldungsdatum: 10.09.2004 Beiträge: 2531 Wohnort: Hofen SH (Schweiz)
  | 
		 | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		Dusky_Joe
 
  
  Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
  | 
		
			
				 Verfasst am: 12.06.2005, 19:46    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Bleibt noch anzumerken, dass BLOAD nur bei 256-Farben-Bitmaps funktioniert, die außerdem nicht zu groß sein sollten.
 
 
Für 24-Bit-BMPs habe ich mal diese Routinen geschrieben:
 
(Du wirst sicher schnellere und bessere finden; aber für den Anfang bringen sie schon was   )
 
 	  | Code: | 	 		  declare sub ShowBMP (FileName AS STRING, xs as integer, ys as integer)
 
declare sub SwBMPPt (FileName as string, xs as integer, ys as integer, x1 as integer = 0, y1 as integer = 0, x2 as integer = -1, y2 as integer = -1)
 
 
screen 19, 24, ,1
 
 
paint (0, 0), &HFFFFFF
 
line (09, 09)-(50, 50), &H00FF, bf
 
line (10, 10)-(49, 49), &HFF00, bf
 
ShowBMP "gfx\Scrn_GameOver.bmp", 0, 0
 
'SwBMPPt "gfx\A00_Block00.bmp", 10, 10
 
getkey
 
 
 
Sub ShowBmp (FileName as string, xs as integer, ys as integer)
 
   dim f as ubyte
 
   f = freefile
 
   
 
   dim xSize as integer
 
   dim ySize as integer
 
   dim zSize as integer
 
   dim yBufS as integer
 
   
 
   dim Zeile as string
 
   dim Pixel(2) as ubyte
 
   dim pcolr as integer
 
   
 
   open FileName for binary as #f
 
      get #f, 19, xSize
 
      Get #f, 23, ySize
 
      
 
      zSize = (xSize * 3) 
 
      yBufS = 4 - (zSize mod 4)
 
      if yBufS = 4 then yBufS = 0
 
      zSize = zSize + yBufS
 
      
 
      Zeile = string$(zSize, 0)
 
      get #f, 55 + (y * zSize), Zeile
 
      
 
      for y = 1 to ySize
 
         for x = 1 to (xSize * 3) step 3
 
            
 
            Pixel(0) = asc(Zeile, x    )
 
            Pixel(1) = asc(Zeile, x + 1)
 
            Pixel(2) = asc(Zeile, x + 2)
 
         
 
            pcolr = rgb(Pixel(2), Pixel(1), Pixel(0))
 
            Pset (xs + x \ 3, ys + (ySize - y)), pcolr
 
         next
 
         
 
         get #f, 55 + (y * zSize), Zeile
 
         
 
      next
 
   close #f
 
end sub
 
 
sub SwBMPPt (FileName as string, xs as integer, ys as integer, x1 as integer = 0, y1 as integer = 0, x2 as integer = -1, y2 as integer = -1)
 
   dim f as ubyte
 
   f = freefile
 
   
 
   dim xSize as integer
 
   dim ySize as integer
 
   dim zSize as integer
 
   dim yBufS as integer
 
   
 
   dim Zeile as string
 
   dim Pixel(2) as ubyte
 
   dim pcolr as integer
 
 
   if (x2 < x1) and (x2 > 0) then swap x1, x2
 
   if (y2 < y1) and (y2 > 0) then swap y1, y2
 
 
   open FileName for binary as #f
 
      get #f, 19, xSize
 
      Get #f, 23, ySize
 
      
 
      if x2 < 0 then x2 = xSize
 
      if y2 < 0 then y2 = ySize
 
      
 
      zSize = (xSize * 3) 
 
      yBufS = 4 - (zSize mod 4)
 
      if yBufS = 4 then yBufS = 0
 
      zSize = zSize + yBufS
 
      
 
      Zeile = string$(zSize, 0)
 
      get #f, 55 + (y * zSize), Zeile
 
      
 
      for y = 1 to ySize
 
         for x = (x1 * 3) + 1 to (x2 * 3) step 3
 
            
 
            if (y >= y1) and (y <= y2) then
 
               Pixel(0) = asc(Zeile, x    )
 
               Pixel(1) = asc(Zeile, x + 1)
 
               Pixel(2) = asc(Zeile, x + 2)
 
               pcolr = rgb(Pixel(2), Pixel(1), Pixel(0))
 
               Pset (xs + x \ 3, ys + (ySize - y)), pcolr
 
            end if
 
            
 
         next
 
         
 
         get #f, 55 + (y * zSize), Zeile
 
         
 
      next
 
   close #f
 
end sub | 	 
  _________________ fully biological degradable
 
 
Once, the big wave arrives, you've got two ways, you can go:
 
Either, you ride it, or you don't do.
 
But, if you don't ride, you'll never know wether you'd have gone wet. | 
			 
		  | 
	 
	
		| Nach oben | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
  | 
   
 
     |