Transparenzfehler (Windows)

  1. 6 weeks ago

    Stefan M

    Feb 22 Germany, NRW, Kirchlengern (Kr...

    Hallo in die Runde.
    Ich habe von zwei Anwendern die Nachricht bekommen, dass die Ausgabe meines Programms fehlerhaft sei. Bei mir (macOS) konnte ich das nicht nachvollziehen, unter Windows sieht man jedoch, dass weiße Flächen, die transparent sein sollen, genau das nicht sind.

    Hier mal ein Beispielausschnitt:
    -image-

    Der für die Ausgabe genutzte Code:

     if LastObject<>nil then
    
       LastObject.Transparent=1
    
       localGraphics.drawpicture LastObject, x*Faktor, y*Faktor,w*Faktor,h*Faktor,0,0,LastObject.Width,LastObject.Height
       
    end

    Hat jemand eine Idee, woaran es liegt?
    Gibt es Probleme mit Transparenzen unter Windows?
    Wie umgehe ich die?
    Ich nutze noch Xojo 2019r1, liegt es daran?

    Gruß, Stefan Mettenbrink.

  2. Markus R

    Feb 22 Pre-Release Testers, Xojo Pro Europe / Germany / Lower Saxon...
    Edited 6 weeks ago

    Ich habe fest gestellt das z.B. zwei übereinander liegende Elemente das untere ein Parent von dem drüber sein muss.
    Im Designer wird das Parent als rotes Rechteck angezeigt. Oder in der Toolbar ist ein Knopf welcher alles als Baumansicht darstellt.
    Hätte ich nie erwartet, ist aber so in Xojo, obwohl Transparent eingeschaltet ist hat man sonst einen farbigen Block als Hintergrund,
    jedenfalls bei WIndows 10.
    Und diese Transparent Option beim Steuerelement kann sehr viele Paint Ereignisse auslösen.
    Ich nutze 2019r3.1

  3. Christian S

    Feb 23 Pre-Release Testers, Xojo Pro, XDC Speakers, Third Party Store Germany

    Sowas würde ich als Picture zusammenbauen und dann in einem Canvas zeichnen.
    Alles andere schreit nach Ärger.

  4. Stefan M

    Feb 23 Germany, NRW, Kirchlengern (Kr...

    OK, etwas mehr Code.

    Ich erzeuge ein Picture:

    LastObject=MyNewPicture(w*Faktor,h*Faktor,32)
     if LastObject<>nil then
       LastObject.Transparent=1
       if DrawMaskOn then
         LocalGraphics=LastObject.Mask.Graphics
       else
         LocalGraphics=LastObject.Graphics
       end
     end

    Darin wird dann diverses ausgegeben (Text, Bilder, etc.).
    Dieses Picture (LastObject) wird dann an der gewünschten Stelle in ein größeres Picture eingefügt:

    if LastObject<>nil then
    
       LastObject.Transparent=1
    
       localGraphics.drawpicture LastObject, x*Faktor, y*Faktor,w*Faktor,h*Faktor,0,0,LastObject.Width,LastObject.Height
       
    end

    Übergeordnet gibt es ein Propertie (Picture) in einem ContainerControl. Dies derzeit Transparenz, alle erzeugten Pictures werden in dieses Picture eingezeichnet.
    ...
    Auch wenn ich bei dem Grundbild die Transparenz auf 1 setze werden die darauf gezeichneten Bilder nicht transparent ausgegeben.

    @Markus Rauch:
    Was Du dazu erklärt hast, habe ich nicht verstanden. Wäre schön, wenn Du das noch mal genauer erklären würdest.

  5. Markus R

    Feb 23 Pre-Release Testers, Xojo Pro Europe / Germany / Lower Saxon...
    Edited 6 weeks ago

    @StefanMettenbrink Was Du dazu erklärt hast, habe ich nicht verstanden. Wäre schön, wenn Du das noch mal genauer erklären würdest.

    also in dem ersten Beispiel ist das Kreis Element außen und dem Fenster zugeordnet und darum sieht man da graue Ecken mit Fenster Farbe zur Laufzeit.

    Beim zweiten Beispiel ist das Kreis Element innen im Rechteck zugeordnet und das sieht dann zur Laufzeit richtig aus.

    Vielleicht könnte das dein Problem sein.
    -image-

  6. Stefan M

    Feb 23 Germany, NRW, Kirchlengern (Kr...

    Danke für die Erklärung.
    Meine Ausgabe ist aber immer in einem Picture.
    Ich lege ein Grund-Picture in Seitengröße und gewünschter Auflösung an. Dort wird ein Hintergrundbild (nahezu vollflächig) ausgegeben. Dann werden diverse kleine Picture mit vorgegebenem Text gefüllt und auf dem Grund-Picture (ggf. gedreht) ausgegeben. Die Ausgabe der kleinen Bilder auf dem Hintergrundbild ist dann nicht transparent, obwohl die kleinen Bilder diese Eigenschaft haben.
    Unter macOS funktioniert das wie gewünscht.

    Hat noch jemand eine Idee?

    Gruß, Stefan Mettenbrink.

  7. Markus R

    Feb 23 Pre-Release Testers, Xojo Pro Europe / Germany / Lower Saxon...

    Hat das vielleicht was mit HI-DPI zu tun?
    Diese mini Bilder sind alle im gleichem Typ inhaltlich gespeichert?
    Ansonsten mal ein Beispiel Projekt wo nur dieses UI Element erstellt wird in die Cloud tun und teilen.

  8. Stefan M

    Feb 24 Germany, NRW, Kirchlengern (Kr...

    Nein, mit HDPI kann es nicht zu tun haben. Ich nutze dafür keine GUI-Elemente. Alles spielt sich im Code ab. Es werden nur Variablen (Picture) genutzt. Zum Schluss wird dann auf ausgegeben (Im Canvas, auf dem Drucker oder als Datei). Ich allen Fällen fehlt unter Windows die Transparenz, wo sie bei macOS vorhanden ist.

    Gruß, Stefan Mettenbrink.

  9. Markus R

    Feb 24 Pre-Release Testers, Xojo Pro Europe / Germany / Lower Saxon...

    Also die Bilder werden im Code gemalt und sind nicht im Projekt hinterlegt?
    An HDPI dachte ich weil man Bilder in verschiedenen Detail Stufen hinterlegen kann und gerade Apple Retina Auflösung hat.

  10. Stefan M

    Feb 24 Germany, NRW, Kirchlengern (Kr...

    Richtig, alles wird im Code erzeugt. Lediglich manche Hintergrundbilder werden aus Dateien (jpg) geladen und in das Picture eingefügt.

  11. Markus R

    Feb 24 Pre-Release Testers, Xojo Pro Europe / Germany / Lower Saxon...
    Edited 6 weeks ago

    Wenn man in Windows einen Haltepunkt setzt hat das Bild einen Alpha Kanal?
    Picture.HasAlphaChannel
    Zumindest wenn man es mit Color.Clear füllt sollte es Transparent sein,
    Was ich ein bischen komisch finde das nur die Felder wo der Text vertikal ist im Screenshot dieses Problem haben.

  12. 5 weeks ago

    Stefan M

    Feb 29 Germany, NRW, Kirchlengern (Kr...

    Muss ich prüfen. Ich weiß noch nicht, wann ich dazu komme.
    Dass nur manche Felder das Problem haben liegt vermutlich an den eingefügten Textfeldern. Die sind manchmal klein genug, dass sie in die weißen Flächen passen.

  13. Carsten B

    Mar 2 Pre-Release Testers, Xojo Pro Germany, NRW, Europe

    Hallo Stefan,

    zeichnest Du die Textblöcke mit dem weißen Hintergrund alle selbst?

  14. Stefan M

    Mar 2 Germany, NRW, Kirchlengern (Kr...

    Ja. Die werden aus den Anwenderdaten generiert.
    Ist das ein Problem?

  15. Carsten B

    Mar 2 Pre-Release Testers, Xojo Pro Germany, NRW, Europe

    Dann erzeuge die Bilder für die Texte doch gleich transparent, indem Du die Bittiefe weg lässt:

    LastObject = MyNewPicture (w*Faktor, h*Faktor)

    So brauchst Du kein Weiß im Hintergrund (und auch die Transparent-Einstellung nicht) und kannst sie problemlos auf einen anderen Hintergrund malen.

  16. Stefan M

    Mar 2 Germany, NRW, Kirchlengern (Kr...

    Das geht nicht. Es sind keine reinen Textfelder. Der Anwender kann hier auch Bilder einfügen und die Texte können farbig sein oder (farbige) Grafikelemente enthalten.

  17. Carsten B

    Mar 2 Pre-Release Testers, Xojo Pro Germany, NRW, Europe

    Und wo ist das Problem dabei?

  18. Stefan M

    Mar 3 Germany, NRW, Kirchlengern (Kr...
    Edited 5 weeks ago

    Wenn ich problemlos die Bittiefe weglassen kann habe ich keines. War mir bislang nur nie in den Sinn gekommen.

  19. Carsten B

    Mar 3 Pre-Release Testers, Xojo Pro Germany, NRW, Europe

    Auf jeden Fall haben die Bilder so keinen Hintergrund, der etwas verdecken könnte. Und Du kannst Dir die ganze Maskiererei sparen.

  20. Stefan M

    Mar 3 Germany, NRW, Kirchlengern (Kr...

    Der Hinweis hat geholfen. Ohne Angabe der Bittiefe wird transparent ausgegeben. Bisher habe ich noch nichts nachteiliges entdeckt.
    Danke!

or Sign Up to reply!