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

Anmeldungsdatum: 23.10.2005 Beiträge: 15
|
Verfasst am: 03.12.2005, 19:31 Titel: Teilweise Transparente BMPs |
|
|
Hallo,
ich schreibe gerade an einem kleinem Spiel
und hab zwei Fragen zur Imagecreate-Bload-Put Methode... Eben mit dieser Methode lade ich Sprites ins Spiel. Doch leider gibt es bei Überlagerung (z.b. bei Explosioen)von zwei Sprites häßlichen Effekt das man den schwarzen Hintergrund sieht. Es gibt beim Put Befehl die möglichkeit den Tranzparenzgradf das Bitmaps zu bestimmen, doch leider nur die des gesamten Bitmaps... Ist es irgendwie möglich nach dem Laden des Bitmaps den schwarzen Hintergrund weg zu bekommen... Ich habs schon versucht das Bitmap mit Transparenten Hintergrund zu speichern, doch leider scheint das BMP Format das nicht zu unterstützen und bekommt dann einen weißen Hintergrund...
Das nächste betrifft den Hintergrund. Ich möchte gerne einen Hintergrund (z.b. ein Bitmap mit einem Planeten oder so) einbinden. Doch sobald andere Sprites dich über ihn bewegen kommt es zu häßlichen Wechselwirkungen mit dem Hintergrund. Kann man irgendwie den Hintergrund schützen?
Hier mal mein kleines Game
http://mitglied.lycos.de/enterpriseforum/progs/Game.rar (rechte Maustaste auf Link und "Speicher unter" Lycos sei dank )
Zuletzt bearbeitet von EverNoob am 03.12.2005, 19:59, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 03.12.2005, 19:47 Titel: |
|
|
Hallo.
Besorg dir gescheiten Webspace z.B. von ARCOR. Da darf man nämlich im Gegensatz zu Lycos Links zu den Web-Inhalten posten.
Ich hab das Posting jetzt nur überflogen, aber wenn du mit dem Funktionsumfang der FB Grafikbefehle in Sachen Transparenz nicht zurecht kommst, schreib dir doch einen eigenen Loader für BMP Dateien oder nimm einen fertigen Source und veränder den dann so, dass er alle Pixel mit einer ganz bestimmten Farbe nicht anzeigt.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
EverNoob

Anmeldungsdatum: 23.10.2005 Beiträge: 15
|
Verfasst am: 03.12.2005, 20:07 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Hallo.
Besorg dir gescheiten Webspace z.B. von ARCOR. Da darf man nämlich im Gegensatz zu Lycos Links zu den Web-Inhalten posten.
Ich hab das Posting jetzt nur überflogen, aber wenn du mit dem Funktionsumfang der FB Grafikbefehle in Sachen Transparenz nicht zurecht kommst, schreib dir doch einen eigenen Loader für BMP Dateien oder nimm einen fertigen Source und veränder den dann so, dass er alle Pixel mit einer ganz bestimmten Farbe nicht anzeigt.
Viele Grüße!
Sebastian |
Jup bei Lycos Webspace funzt eigendlch immer nur die Methode die ich in meinem ersten Posting angefügt habe;)
Ist es nicht möglich die Farbinformation die in dem Feld gespeichert werden zu verändern? Es muß doch möglich sein Zugriff auf den Puffer zu bekommen und die schwarzen Pixel einfach zu entfernen... Ich hab leider noch nicht so die Erfahrungen mit Pointern..
Code: |
dim shared ship as any ptr
ship=IMAGECREATE(50,50)
|
Aber ist die Adresse dieses Pointers nicht die Anfangsadresse des Feldes in dem die Bilddaten gepuffert sind? Wie könnte man auf dieses Array zugreifen um den Inhalt zu verändern? |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 03.12.2005, 20:29 Titel: |
|
|
Hallo.
Möchtest du NUR die schwarzen pixel entfernen??
Wenn ja, dann färbe alle schwarzen pixel in pink(&Hff00ff), und verwende
Code: | Put (x,y),bild,trans |
Dadurch sind dann die pinken bereiche durchsichtig. Das funktioniert allerdings nicht bei 32bit bildern(glaube ich jedenfalls).
Michael
EDIT: Ich sag da mal nichts zu. |
|
Nach oben |
|
 |
EverNoob

Anmeldungsdatum: 23.10.2005 Beiträge: 15
|
Verfasst am: 03.12.2005, 20:45 Titel: |
|
|
programmierer hat Folgendes geschrieben: | Hallo.
Möchtest du NUR die schwarzen pixel entfernen??
Wenn ja, dann färbe alle schwarzen pixel in pink(&Hff00ff), und verwende
Code: | Put (x,y),bild,trans |
Dadurch sind dann die pinken bereiche durchsichtig. Das funktioniert allerdings nicht bei 32bit bildern(glaube ich jedenfalls).
Michael
|
Danke das werde ich mal probieren....
Hmm mal wieder vergessen die chmods zu setzten Was meintest du? |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 04.12.2005, 00:21 Titel: |
|
|
meine möglichkeit:
am anfang laden und mit point(x,y) abtasten und in einem array speichern. dann kannst du die farben mit rgba(rot,grün,blau,transparenz) bearbeiten.
 |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 04.12.2005, 00:57 Titel: |
|
|
Guck mal auf dem Bild gaaaaanz oben rechts.
Ich würde das ja nicht so allen zugänglich machen.
Der Systembenchmarktest sieht übrigens gut vom design aus.
Michael |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
EverNoob

Anmeldungsdatum: 23.10.2005 Beiträge: 15
|
Verfasst am: 04.12.2005, 11:22 Titel: |
|
|
Dein Tip mit "Trans" war Gold Wert Ich benutzte im moment noch die deutsche Hilfedatei... Doch so wie es aussieht ist die WIKI Version doch etwas ausführlicher (aktueller )
programmierer hat Folgendes geschrieben: | Guck mal auf dem Bild gaaaaanz oben rechts.
Ich würde das ja nicht so allen zugänglich machen.
|
Ach was da war doch nichts außergewöhnliches...
programmierer hat Folgendes geschrieben: |
Der Systembenchmarktest sieht übrigens gut vom design aus.
Michael |
Danke 
Zuletzt bearbeitet von EverNoob am 04.12.2005, 16:57, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
EverNoob

Anmeldungsdatum: 23.10.2005 Beiträge: 15
|
Verfasst am: 04.12.2005, 11:50 Titel: |
|
|
psygate hat Folgendes geschrieben: | meine möglichkeit:
am anfang laden und mit point(x,y) abtasten und in einem array speichern. dann kannst du die farben mit rgba(rot,grün,blau,transparenz) bearbeiten.
 |
Die Methode hört sich interessant an... Werde ich mal in Hinterkopf behalten... |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 04.12.2005, 14:48 Titel: |
|
|
die methode braucht zwar etwas länger am anfang, dafür kann man an den einzelnen ppixel modellieren wie man will, und natürlich, man erspart sich einen langwierigen festplattenzugriff
@ EverNoob:
Sag mal, ich find des game echt gut, aber, könnte ich unter umständen den source kriegen? Ich möcht mich gerne etwas damit beschäftigen. *flehbittbettel* |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 04.12.2005, 16:51 Titel: |
|
|
@EverNoob:
Tatsächlich, die dt. Ref ist nicht so aktuell?
Ich dachte eigentlich, dass ich in manchen Kapiteln noch vor dem en. wiki läge...
Anyway, sieh dir mal diesen Eintrag an:
http://fb.exp-soft.de/Referenz.php?zeig=tuts&col1=a0d5d0&ref=yes&show=PUT#9
Das einzige, was daran noch geändert werden muss, ist die Tatsache, dass TRANS nur für 32bpp-Modi funktioniert.
Was du übrigens auch verwenden kannst, wäre das Aktionswort CUSTOM. Das funktioniert im Grunde genau so wie die POINT-RGBA-Bearbeiten-Methode, könnte aber um etwas schneller sein...
Anyway, ich halte das zumindest für praktischer.
Möglicherweise hast du auch nur eine veraltete CHM; inzwischen gibt es eine Neue, Nur Mecki weigert sich wohl bisweilen, das Ding upzuloaden... hat wohl auch seinen eigenen netten Weihnachtsstress
Anyway, try this:
http://fb.exp-soft.de/referenz/referenz.zip
Da drin sollte die gesamte, AKTUELLE Ref sein, als HTML.
Anmerkung: Um die "altbekannte" Navigation zu öffnen, öffne die Datei _Start.html, die sich im Archiv befindet.
Mecki, nix für ungut
Have a nice day
Ciao
Dusky Joe _________________ 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 |
|
 |
EverNoob

Anmeldungsdatum: 23.10.2005 Beiträge: 15
|
Verfasst am: 04.12.2005, 17:15 Titel: |
|
|
Dusky_Joe hat Folgendes geschrieben: |
Möglicherweise hast du auch nur eine veraltete CHM; inzwischen gibt es eine Neue
|
Ja so siehts aus.... War schon froh überhaupt eine so ausführliche und gute offline Referenz zu finden Danke für den Link
@psygate ich werd den Source noch offen zu legen....Und zwar wenn ich bald die erste Version komplett fertig hab. ich werde den Kern des Programmes dann auf meinen Webspace hochladen. Ich kann dir dann bescheid geben... |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
Verfasst am: 05.12.2005, 20:47 Titel: |
|
|
Code: | DECLARE SUB BildLaden(Pfad AS STRING,BildNr AS INTEGER)
DECLARE SUB BildSpeicherFreigeben(BildNr AS INTEGER)
DECLARE SUB BildMitMaskeZeigen(X AS INTEGER,Y AS INTEGER,BildNr AS INTEGER,MaskeNr AS INTEGER) |
Code: | 'Laedt Bilder in "Bild(BildNr)".
SUB BildLaden (Pfad AS STRING,BildNr AS INTEGER)
DIM f AS INTEGER
f=FREEFILE
OPEN Pfad FOR BINARY AS #f
GET #f,19,Hoehe
GET #f,23,Breite
CLOSE #f
Bild(BildNr) = IMAGECREATE(Hoehe, Breite)
BLOAD Pfad, Bild(BildNr)
END SUB |
Code: | SUB BildSpeicherFreigeben (BildNr AS INTEGER)
IMAGEDESTROY Bild(BildNr)
END SUB |
Code: | SUB BildMitMaskeZeigen(X AS INTEGER,Y AS INTEGER,BildNr AS INTEGER,MaskeNr AS INTEGER)
PUT (X,Y), Bild(MaskeNr),AND
PUT (X,Y), Bild(BildNr),XOR
END SUB |
das wäre dann auch noch ne möglichkeit.
dabei lädst du 2 bilder die du mit AND und XOR verknüpfst wie du siehst.
die maske ist dabei ein bild in der alles, was nicht transparent sein soll schwarz ist, und das transparente weiss. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 05.12.2005, 22:30 Titel: |
|
|
ich glaub dein beispiel wird falsche ergebnisse liefern, da freeBasic 4 byte integers verwendet, in hoehe und breite allerdings nur 2byte integers sind! _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 06.12.2005, 22:13 Titel: |
|
|
ach stimmt ja, was für long war, ist jetzt integer  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|