Pixmaps Transparent, aber wie?
Übersicht

![]() |
BobBetreff: Pixmaps Transparent, aber wie? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
ich versuch mich grade am friscch erworbenen MaxGui Modul. Ich versuche nun auf einem Canvas eine PixmAp zu zeichnen deren Farbe 255,0,255 Transparent sein soll. Dazu habe ich die Pixmap erstmal geladen und anschliessend mit MaskPixmap die Farbe ausgeblendet. Als ergebniss wird nun die maskierte Farbe mit schawrz eingezeichnet. Na Toll 1. Wie bekomme ich die Farbe also komplett transparent? 2. Mit images zu arbeiten wäre mir eh viel lieber. Geht das? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Mit Images arbeiten ist möglich, einfach LoadImage machen und das Pixmap angeben
2. In BlitzMax bringt es prinzipiell nichts wenn du lädst etc und dann etwas mit Set festlegst. Set wirkt sich nur auf darauf folgende Operationen aus, nicht auf Dinge die schon geschehen sind. Masking: ich nehme zwar an, dass ist bekannt, aber wenn du JPG nutzt gibt es kein Masking oder dergleichen, da JPG keine fixen Farbwerte gespeichert haben. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die schnelle Antwort.
Leider schient auch das Laden von Images, nutzlos in Bezug auf Transparenz, zu sein. Da ich ja nicht zuvor mittels Graphics 800,600 oder so arbeite scheint der Befehl setMaskColor ohne Wirkung zu sein. Zu 2. Bisher hatte ich noch keinen Befehl mit "Set" irgendwo aufgerufen. (ausser bei setlayout). Das Problem bleibt also weiterhin. Wie bekomme ich eine bestimmte Farbe eines Images oder Pixmap (mir vollkommen Wurst) Transparent auf ein Canvas eingezeichnet. (bzw. eben nicht Eingezeichnet) Hast du noch nen Tip? Danke |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist jetzt ne Blöde Frage, aber hast du SetMaskColor auch nach SetGraphics geschrieben? | ||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe überhaupt nicht irgendwo SetGraphics geschrieben.
Bisher waren alle Beispiele die ich mir zu MaxGui angeschaut habe frei von irgendwelchen graphics aufrufen, bis natürlich an den stellen wo ein Canvas geupdtaet werden soll. |
||
![]() |
FOODy |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du brauchst aber ein SetGraphics um auf den Canvas zu zeichnen ;D
Bzw. SetGraphics<>Graphics Also bei mir geht es ![]() Hier mal eine bearbeitete Version von dem Canvasbeispiel: Code: [AUSKLAPPEN] ' createcanvas.bmx Strict Global GAME_WIDTH=320 Global GAME_HEIGHT=240 ' create a centered window with client size GAME_WIDTH,GAME_HEIGHT Local wx=(ClientWidth(Desktop())-GAME_WIDTH)/2 Local wy=(ClientHeight(Desktop())-GAME_HEIGHT)/2 Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS) ' create a canvas for our game Local canvas:TGadget=CreateCanvas(0,0,320,240,window) '################################### '################################### SetGraphics CanvasGraphics(canvas) SetMaskColor(255,0,255) Local image:TImage = LoadImage("test.bmp") '################################### '################################### ' create an update timer CreateTimer 60 While WaitEvent() Select EventID() Case EVENT_TIMERTICK RedrawGadget canvas Case EVENT_GADGETPAINT SetGraphics CanvasGraphics(canvas) SetBlend ALPHABLEND ' Damit die Maske ne wirkung hat Cls SetColor 255,255,0 DrawRect 12,12,48,48 SetColor 255,255,255 DrawImage image,48,48 Flip Case EVENT_WINDOWCLOSE FreeGadget canvas End Case EVENT_APPTERMINATE End End Select Wend Für test.bmp irgendein bild. (hier ist die Maskfarbe 255,0,255) Gruß, FOODy |
||
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Du brauchst aber ein SetGraphics um auf den Canvas zu zeichnen ;D
Na hab ich doch oben erwähnt das ich das tue wens an den Canvas geht. Seis drum. Dein Beispiel hat mir verdeutlicht wie es gemacht wird. Danke. Der entschidende Punkt war also nach dem ersellen des Canvas diesen dierekt danach mittels SetGraphics CanvasGraphics(canvas) zu aktivieren. Dann erst die Images laden. Jetzt klappt es. Im Übrigen kan ich auch auf SetBlend ALPHABLEND verzichten. Es ist auch ohn den Aufruf transparent. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Alphablend wird nur für richtiges Alpha benötigt.
Normalerweise ist MaskBlend ausreichend. das es sonst auch transparent ist, wäre mir neu. Vielleicht einfach nur die gleiche hintergrundfarbe wie der Canvas, weswegen es nicht auffällt? |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ dreamora
Ja. Ist schon etwas seltsam aber ich verwende keinen BlendMode. Weder Alpha noch Mask. Ich habe im Hintergrund mal ein farbiges Rect. gezeichnet und das darüberligende Image ist Tatsächlich Taransparent. Vielleicht ist MaskBlend per default an. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann sein. Früher wars glaub SolidBlend. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group