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:

Teilweise Transparente BMPs

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



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 03.12.2005, 19:31    Titel: Teilweise Transparente BMPs Antworten mit Zitat

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... traurig
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" zwinkern Lycos sei dank lächeln )


Zuletzt bearbeitet von EverNoob am 03.12.2005, 19:59, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 03.12.2005, 19:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 03.12.2005, 20:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 03.12.2005, 20:29    Titel: Antworten mit Zitat

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. peinlich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 03.12.2005, 20:45    Titel: Antworten mit Zitat

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.... lächeln


programmierer hat Folgendes geschrieben:

EDIT: Ich sag da mal nichts zu. peinlich


Hmm mal wieder vergessen die chmods zu setzten zwinkern Was meintest du?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 04.12.2005, 00:21    Titel: Antworten mit Zitat

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.
durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 04.12.2005, 00:57    Titel: Antworten mit Zitat

Guck mal auf dem Bild gaaaaanz oben rechts. durchgeknallt
Ich würde das ja nicht so allen zugänglich machen.


Der Systembenchmarktest sieht übrigens gut vom design aus.

Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

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

Was denn? durchgeknallt *neugierigsei* Hammer Meinst du das Bild, wo bei mir nur ein 403-Fehler kommt?
_________________

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
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 04.12.2005, 11:22    Titel: Antworten mit Zitat

Dein Tip mit "Trans" war Gold Wert zwinkern Ich benutzte im moment noch die deutsche Hilfedatei... Doch so wie es aussieht ist die WIKI Version doch etwas ausführlicher (aktueller böse )



programmierer hat Folgendes geschrieben:
Guck mal auf dem Bild gaaaaanz oben rechts. durchgeknallt
Ich würde das ja nicht so allen zugänglich machen.


geschockt Ach was da war doch nichts außergewöhnliches... lachen

programmierer hat Folgendes geschrieben:

Der Systembenchmarktest sieht übrigens gut vom design aus.
Michael


Danke cool


Zuletzt bearbeitet von EverNoob am 04.12.2005, 16:57, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 04.12.2005, 11:50    Titel: Antworten mit Zitat

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.
durchgeknallt


Die Methode hört sich interessant an... Werde ich mal in Hinterkopf behalten...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 04.12.2005, 14:48    Titel: Antworten mit Zitat

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 cool


@ 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. durchgeknallt *flehbittbettel*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 04.12.2005, 16:51    Titel: Antworten mit Zitat

@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 zwinkern
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 Zunge rausstrecken




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
Benutzer-Profile anzeigen Private Nachricht senden
EverNoob



Anmeldungsdatum: 23.10.2005
Beiträge: 15

BeitragVerfasst am: 04.12.2005, 17:15    Titel: Antworten mit Zitat

Dusky_Joe hat Folgendes geschrieben:


Möglicherweise hast du auch nur eine veraltete CHM; inzwischen gibt es eine Neue



Ja so siehts aus.... verlegen War schon froh überhaupt eine so ausführliche und gute offline Referenz zu finden zwinkern 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
Benutzer-Profile anzeigen Private Nachricht senden
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 05.12.2005, 20:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 05.12.2005, 22:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OdinX



Anmeldungsdatum: 29.07.2005
Beiträge: 253
Wohnort: SG Schweiz

BeitragVerfasst am: 05.12.2005, 22:46    Titel: Antworten mit Zitat

komisch... bei mir funktioniert das neutral


edit: höhe und breite sind je 4 byte lang:

http://de.wikipedia.org/wiki/Windows_bitmap
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 06.12.2005, 22:13    Titel: Antworten mit Zitat

ach stimmt ja, was für long war, ist jetzt integer grinsen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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