Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jan

Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 10.01.2005, 16:28 Titel: pset - Anweisung |
|
|
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.
Weiß jemand eine Lösung des Problems??? |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
Verfasst am: 10.01.2005, 17:54 Titel: |
|
|
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.
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de |
|
Nach oben |
|
 |
Jan

Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 10.01.2005, 18:14 Titel: |
|
|
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 |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 10.01.2005, 18:21 Titel: |
|
|
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. 1 ist überall gleich. Wenn du nach dem 5. Pixel 1 in blau änderst, werden alle vorher gesetzten 1er Pixel auch blau...
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 10.01.2005, 22:01 Titel: |
|
|
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 |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 11.01.2005, 00:45 Titel: |
|
|
@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 |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
Jan

Anmeldungsdatum: 04.01.2005 Beiträge: 74
|
Verfasst am: 12.01.2005, 15:08 Titel: |
|
|
Danke für die Hilfe!
Jetzt versteh ich das auch. mensch, da hat sich aber einer was bei gedacht.  |
|
Nach oben |
|
 |
|