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 weie Flchen, die transparent sein sollen, genau das nicht sind.
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?
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
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.
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 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.
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.
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.
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.
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.
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.