Transparenz-Funktion funktioniert nicht korrekt - Abhilfe?
Übersicht

![]() |
RollingStoneBetreff: Transparenz-Funktion funktioniert nicht korrekt - Abhilfe? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi!
folgendes: BlitzBasic: [AUSKLAPPEN]
die hintergrundfarbe von dem optionen.bmp - bild ist also 0 0 0 - schwarz. diese soll transparent werden. hier noch das bild: http://img53.imageshack.us/img53/3551/optionen.png (hier steht jetzt .png ... das liegt daran, dass ich inzwischen alle möglichen endungen ausprobiert habe...) wenn ich jetzt in meinem bb-programm eine normale hintergrundfarbe hätte (also zb 0 0 0 - schwarz), könnte ich ja ohne probleme auf diese transparenzfunktionen verzichten. ich habe allerdings ein großes hintergrundbild im programm drin, deswegen bin ich wohl darauf angewiesen. wenn ich jetzt den oben genannten code ausführe, werden lange nicht alle schwarzen pixel transparent, sondern nur ein paar. in den buchstaben-zwischenräumen und kurz davor sind überall noch schwarze pixel! wer hat eine idee? grüße und danke RS |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hattest es mal als jpg gespeichert, was nicht verlustfrei ist und Artefakte macht ODER Du hast beim Einzeichnen des Wortes Optionen Antialiasing aktiviert gehabt, was Pixel mit Werten nache 0,0,0 erstellt aber nicht genau 0,0,0.
So oder so musst Du Deine Grafik neu erstellen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich (besser: IrfanView) zählt 17 Farben - auch kein Wunder bei dem Antialias. So wird das so oder so nichts werden, da Blitz nur exakt eine Farbe transparent macht.
Ich würde dir empfehlen die Draw3D von Hectic zu verwenden. Alternativ von Anfang an in einem Verlustfreien Format abspeichern und harte Kanten in kauf nehmen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke euch beiden!
das war's! |
||
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
noch was dazu:
diese bilder, mit transparenz an den rändern, fungieren jetzt als buttons. außerdem bin ich gerade dabei, einen eigenen mauszeiger zu erstellen. (hidepointer) die pixelgenaue kollisionsabfrage funktioniert auch gut, und zwar so: BlitzBasic: [AUSKLAPPEN]
"spitze" ist also eine 1x1 pixel große schwarze grafik, die es möglich machen soll, dass die bedingung eben nur eintritt, wenn man mit diesem einen pixel, also der eigentlichen mausspitze, über dem button ist. diese spitze würde ich jetzt gerne transparent machen, dann funktioniert ja allerdings die imagescollide-funktion nicht mehr. ich könnte höchstens die zweite grafik, also die eigentliche mauszeiger-grafik, über den punkt drüberzeichnen, sodass man diesen nicht mehr sieht. gibt es auch die möglichkeit, das nur mit der eigentlichen mauszeiger-grafik zu schaffen, ohne dass extra diese spitzen-grafik benötigt wird? oder wie würdet ihr das bewerkstelligen? danke und gruß RS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ImagesCollide ist verbugt (näheres hier) - aber zum Problem: Schreib dir eine Funktion, die überprüft, ob die Mauskoordinaten sich in dem Rechteck befinden die das Bild einnehmen. Das ist nicht Pixelgenau aber schnell und einfach. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst also auch RectsOverlap![]() ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
gesagt, getan. habe das problem jetzt mit rectsoverlap gelöst. | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nebenbei hättest Du zum überprüfen der Kollision den Punkt nicht müssen einzeichnen. Dem Befehl reicht die Bitmap, sie muss nicht gezeichnet werden. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Um nur einen Punkt auf die Überlagerung zu überprüfen ist RectsOverlap unnötig. Ich würde dir zu Xeres' Vorschlag raten, so habe ich es in Menüs, etc. bis jetzt auch immer einwandfrei lösen können.
MfG |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok. habe es jetzt mal so versucht wie ihr gesagt habt. funktioniert auch.
neues problem: BlitzBasic: [AUSKLAPPEN]
immer wenn ich auf den button klicke, soll ja die button-grafik geändert werden. doch leider funktioniert das nur sehr unsauber bzw. unregelmäßig, was wohl daran liegt, dass die bedingung einfach immer noch erfüllt ist, wenn die schleife wiederholt durchläuft. daher wohl das flackern. wie mache ich das besser? |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also dazu:
Code: [AUSKLAPPEN] If aktiv = 0 Then
aktiv = 1 ElseIf aktiv = 1 Then aktiv = 0 End If fällt mir folgendes ein: Code: [AUSKLAPPEN] aktiv = 1-aktiv
Edit: MouseHit statt MouseDown könnte das Problem lösen. |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
- Zuletzt bearbeitet von Nicdel am Mi, Okt 07, 2009 18:45, insgesamt einmal bearbeitet
![]() |
ComNik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global mh1 Global mx Global my Main Loop: mh1 = MouseHit(1) mx = MouseX() my = MouseY() If mh1 ; = True ist aber unnötig If mx > button\x And my > button\y If mx < button\x + button\width And my < button\y + button\height button\state = 1 ; Geklickt Else button\state = 0 End If Else button\state = 0 End If End If Erstmal auf MouseHit(1) überprüfen. Das spart in 90% der Fälle die beiden If abfragen für die Koordinaten. Da das ja nur fällig ist, falls geklickt wurde. Die Variable mh1 ist nötig, um einen beliebten "Bug" mit der MouseHit() Funktion zu umgehen. lg ComNik |
||
WIP: Vorx.Engine |
![]() |
RollingStone |
![]() Antworten mit Zitat ![]() |
---|---|---|
auch wenn es jetzt schon einige tage her ist. danke an euch beide! | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group