|
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, 18: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, 18: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, 19: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: 2507 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 12.06.2005, 20: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.
|
|