Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

pset - Anweisung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 10.01.2005, 16:28    Titel: pset - Anweisung Antworten mit Zitat

Soo,

habe einen eigenen bmp loader geschrieben.
funktioniert ganz toll, doch bei der anzeige der pixel läuft irgendwie was schief.

Code:

dim bild(324) as integer

'Gewusel, gewusel, gewusel
'Bild ist 18x18 pixel groß und hat 24bit Farbtiefe
'Die Farben eines Pixels sind in Bilddaten() abgespeichert.
'b = blau     g = gruen      r = rot

'hier wird jetzt das bild gezeichnet

for y = 18 to 1 step -1

     for x = 1 to 18

          let index = index+1

          palette 1,  65536 * bilddaten(index).b + 256 * bilddaten(index).g+ bilddaten(index).r

          pset (x,y),1

      next x

next y


'und hier wird es im Feld bild abgespeichert

get (1,1)-(18,18), bild
put (50,50), bild



doch der zeichnet immer nur die hintergrundfarbe, also wenn z.b. der hintergrund des bildes rot ist, krieg ich ein 18x18 großes rotes feld raus.

Dann hab ich mal ne kurze Warteschleife eingebaut um zu sehen, welche Farben gezeichnet werden.... und hier kommt mein eigentliches problem.
Wenn nun z.b. das bild einen roten hintergrund mit weißen punkten hat, dann zeichnet der das rote, bis ein weißer punkt kommt. So weit ist ja noch alles richtig, aber wenn er nun den weißen Punkt "malt", wird er im nächsten Moment rot. Also sieht man kurz, bis der nächste pixel gezeichnet wird, einen weißen pixel, der dann aber rot wird.
traurig

Weiß jemand eine Lösung des Problems???
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 10.01.2005, 17:54    Titel: Antworten mit Zitat

Hi Jan!

Du zeichnest ja auch immer nur mit einer Farbe, nämlich Farbe Nummer 1.

Dann änderst du mit Palette wieder die Farb-RGB-Werte von Nummer 1, da ist irgendwie kein Sinn dahinter.

24 bit kannst du sowieso nicht anzeigen! nur 256 Farben, also 8 Bit.

Daher hast du dann auch 256 Farbnummern, und denen musst du vor dem Pixeln der Pixel mit POKE oder meinetwegen auch PSET jeweils die richtigen Paletten-Farben zuweisen.

Grüßle und viel Erfolg,
Mecki

PS: Informier dich mal bei z.B. www.wikipedia.de über den Aufbau einer 8-Bit-BMP, wenn du da noch nicht bescheid weißt.
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 10.01.2005, 18:14    Titel: Antworten mit Zitat

ABer eigentlich müsste das doch gehen.

Denn der Punkt wird ja direkt gezeichnet mit der farbe 1,
dann wird die farbe 1 wieder neu "definiert".
dann wieder der punkt mit der neuen farbe 1
...

muss doch gehen.

das mit 8 bit struktur hab ich mir schon angeschaut. find ich ein bissle komplizierter, daher wollte ich eigentlich 24 bit.

geht das nicht?? ist mir eigentlich egal wenn der nicht alle farben hat.
hab das mit 24 bit auch eigentlich nur wegen des aufbaus genommen, fand ich leichter.


edit:
zu dem link von wikipedia:

Kannst du mir vielleicht sagen oder nen link geben, wo erklärt ist, was ein Offset ist?
Kann ich das genau so behandeln wie die "normalen" Positionen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 10.01.2005, 18:21    Titel: Antworten mit Zitat

Hallo.

Zitat:
Denn der Punkt wird ja direkt gezeichnet mit der farbe 1,
dann wird die farbe 1 wieder neu "definiert".
dann wieder der punkt mit der neuen farbe 1


Na da ist der Knick in der Logik. lächeln 1 ist überall gleich. Wenn du nach dem 5. Pixel 1 in blau änderst, werden alle vorher gesetzten 1er Pixel auch blau... zwinkern

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 10.01.2005, 22:01    Titel: Antworten mit Zitat

Du musst verstehen, dass die Farbindizes auf dem Bildschirm als Referenz und nicht als eigener Wert abgelegt werden. Wird dann eine Farbe verändert verändern sich alle Referenzen darauf, also auch die auf dem Bildschirm.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 11.01.2005, 00:45    Titel: Antworten mit Zitat

@Jan...

die anderen haben schon recht...

...ich hab mir damals als Denkhilfe immer vorgestellt das ich zum Zeichnen 256 nummerierte Stifte nehmen kann. Diese 256 Stifte kann ich aus ner großen Kiste mit 16 Millionen bunten Stiften raus nehmen.

Ich nehme also Stift 1 (ROT) und male mit dem...jetzt kann ich Stift eins auch nur für ROT nehmen. Nehme ich mir einen neuen Stift 1 (z.B. BLAU) wird alles was vorher mit Stift 1 gemalt wurde (ROT) nun also ebenfalls BLAU. Um BLAU zu malen muß ich also einen Stift 2 nehmen usw.

Im ersten Moment fand ich das ziemlich dämlich, aber das ganze hat auch große Vorteile, so kann man z.B. ganz einfach Bilder ein und ausblenden (also z.B. von schwarz nach bunt umfärben) - was wiederum in TrueColor (16 mill. Farben) nicht so einfach geht.
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 11.01.2005, 21:04    Titel: Antworten mit Zitat

Der berühmte Hinweis auf

http://www.dreael.ch/Deutsch/Download/WindowsBitmapBibliothek.html

darf hier natürlich wie gewohnt nicht fehlen... ;-) Ansonsten mein Tipp zur Sache: Unbedingt darauf achten, nur mit Bildformaten, die zum verwendeten SCREEN-Modus kompatibel sind, arbeiten! Programmen wie Corel PhotoPAINT und Adobe Photoshop haben übrigens ihr Metier, 24-Bit-Bilder auf eine optimierte Farbpalette mit 16 oder 256 Farben herunterrechten, sehr gut im Griff. Siehe dazu

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/BilderVerwenden.html

24-Bit-Bilder würde ich also wirklich nur mit SuperVGA verwenden; siehe dazu

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/VESA-Schnittstelle.html
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jan



Anmeldungsdatum: 04.01.2005
Beiträge: 74

BeitragVerfasst am: 12.01.2005, 15:08    Titel: Antworten mit Zitat

Danke für die Hilfe!

Jetzt versteh ich das auch. mensch, da hat sich aber einer was bei gedacht. happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz