[GDI+] GdipFillRectangle Problem! [gelöst]
[GDI+] GdipFillRectangle Problem! [gelöst]
Ich bin gerade dabei eine kleine DLL zu schreiben um auf den
Bildschirm zeichnen zu können.
Leider liefert GdipFillRectangle() ein falsches Ergebnis!
Mein Brush hat als Alpha $FF - also undurchsichtig.
Wenn ich den Brush mit GdipFillEllipse() verwende funktioniert alles
jedoch nicht mit GdipFillRectangle() !?
Hier ein Bild dazu (mit Rect & Ellipse...):
Ist das ein Bug ?
Bildschirm zeichnen zu können.
Leider liefert GdipFillRectangle() ein falsches Ergebnis!
Mein Brush hat als Alpha $FF - also undurchsichtig.
Wenn ich den Brush mit GdipFillEllipse() verwende funktioniert alles
jedoch nicht mit GdipFillRectangle() !?
Hier ein Bild dazu (mit Rect & Ellipse...):
Ist das ein Bug ?
Zuletzt geändert von Mijikai am 16.03.2018 22:08, insgesamt 2-mal geändert.
Re: [GDI+] GdipFillRectangle Problem!
Hallo Mijikai,
was verstehst du unter einem falschen Ergebnis ?
Ich glaube für die Problemlösung sind mehr Informationen (z.B. Code) notwendig.
was verstehst du unter einem falschen Ergebnis ?
Ich sehe auf dem Bild eine undurchsichtige Ellipse und auch ein undurchsichtiges Rechteck.Mijikai hat geschrieben:Leider liefert GdipFillRectangle() ein falsches Ergebnis!
Mein Brush hat als Alpha $FF - also undurchsichtig.
Ich glaube für die Problemlösung sind mehr Informationen (z.B. Code) notwendig.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: [GDI+] GdipFillRectangle Problem!
Das Rechteck ist Transparent die Ellipse nicht - beide sollten undurchsichtig sein.ccode_new hat geschrieben: Ich sehe auf dem Bild eine undurchsichtige Ellipse und auch ein undurchsichtiges Rechteck.
(Man sieht das Fenster unter dem Rechteck.)
Der Aufruf erfolgt mit dem gleichen Brush deshalbt sollte das Ergebnis identisch sein
was Farbe & Alphakanal belangt.
Re: [GDI+] GdipFillRectangle Problem!
Ich brauche mal ein bisschen mehr Code.
Wie ist den die genaue Zeichenreihenfolge und wie übergibst du die gesamten Parameter ?
Wie ist den die genaue Zeichenreihenfolge und wie übergibst du die gesamten Parameter ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: [GDI+] GdipFillRectangle Problem! [gelöst]
Nach etwas Recherche -> es ist ein Bug!
Beste Lösung: Alpha -> $FE
Beste Lösung: Alpha -> $FE
Re: [GDI+] GdipFillRectangle Problem! [gelöst]
Und wie sieht die Ausgabe dann mit $FE aus ?
Was für eine "gdiplus.lib" ist das eigentlich ?
...und wozu machst du es dir so schwer um ein paar Formen mit Transparenzen zu zeichnen ?
Fragen über Fragen.
...
Ich habe mal ein wenig recherchiert
"Wenn du Rechtecke im rechten Winkel zeichnest, beschleunigt GDI+ die Geschwindigkeit, indem es dies schneller als andere Zeichungen zeichnet. Diese Technik wird Bitbliting genannt. Das ist eigentlich ziemlich clever, da es der schnellste Weg ist, Rechtecke auf einer Oberfläche zu zeichnen. Die zu zeichnenden Rechtecke müssen jedoch die Regel erfüllen, dass sie rechtwinklig sind.
Diese clevere Optimierung wurde gemacht, bevor es DWM, Aero, Glass und all die neuen Ideen gab.
Intern kopiert Bitblitting nur die RGBA-Farbdaten von Pixeln aus einem Speicherbereich in einen Anderen (sozusagen von der Zeichnung auf deinem Fenster). Leider ist das RGB-Format, das es schreibt, nicht mit Glasflächen kompatibel, was zu den seltsamen Transparenzeffekten führt, die du beobachtet hast."
.......
Du könntest als Lösung auch "FillPolygon" verwenden.
Was für eine "gdiplus.lib" ist das eigentlich ?
...und wozu machst du es dir so schwer um ein paar Formen mit Transparenzen zu zeichnen ?
Fragen über Fragen.
...
Ich habe mal ein wenig recherchiert
"Wenn du Rechtecke im rechten Winkel zeichnest, beschleunigt GDI+ die Geschwindigkeit, indem es dies schneller als andere Zeichungen zeichnet. Diese Technik wird Bitbliting genannt. Das ist eigentlich ziemlich clever, da es der schnellste Weg ist, Rechtecke auf einer Oberfläche zu zeichnen. Die zu zeichnenden Rechtecke müssen jedoch die Regel erfüllen, dass sie rechtwinklig sind.
Diese clevere Optimierung wurde gemacht, bevor es DWM, Aero, Glass und all die neuen Ideen gab.
Intern kopiert Bitblitting nur die RGBA-Farbdaten von Pixeln aus einem Speicherbereich in einen Anderen (sozusagen von der Zeichnung auf deinem Fenster). Leider ist das RGB-Format, das es schreibt, nicht mit Glasflächen kompatibel, was zu den seltsamen Transparenzeffekten führt, die du beobachtet hast."
.......
Du könntest als Lösung auch "FillPolygon" verwenden.
Zuletzt geändert von ccode_new am 16.03.2018 22:50, insgesamt 1-mal geändert.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: [GDI+] GdipFillRectangle Problem! [gelöst]
Mit Alpha $FE:ccode_new hat geschrieben:Und wie sieht die Ausgabe dann mit $FE aus ?
Was für eine "gdiplus.lib" ist das eigentlich ?
...und wozu machst du es dir so schwer um ein paar Formen mit Transparenzen zu zeichnen ?
Fragen über Fragen.
Die *.lib war bei VisualStudio dabei.
Warum schwer ?
Edit:
Danke für den Typ mit den Polygonen werd ich ausprobieren
Re: [GDI+] GdipFillRectangle Problem! [gelöst]
Wenn einfach einfach einfach wäre, wäre es auch zu einfach.Warum schwer ?
Mit Puri kann man das ja leider auch viel zu einfach anders lösen.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: [GDI+] GdipFillRectangle Problem! [gelöst]
Ich verstehe nicht was du meinst ?ccode_new hat geschrieben:...Mit Puri kann man das ja leider auch viel zu einfach anders lösen.Warum schwer ?
Wie einfacher ?
Re: [GDI+] GdipFillRectangle Problem! [gelöst]
Was genau willst du erreichen, weswegen du diese "gdiplus.lib" nutzen möchtest ?
Außerdem scheint diese Lib (dll) auch schon ziemlich Alt ist auch lediglich in einer 32bit Version verfügbar.
Außerdem scheint diese Lib (dll) auch schon ziemlich Alt ist auch lediglich in einer 32bit Version verfügbar.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat