[GDI+] GdipFillRectangle Problem! [gelöst]

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

[GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von Mijikai »

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() !? :( :freak:

Hier ein Bild dazu (mit Rect & Ellipse...):
Bild

Ist das ein Bug ? :bluescreen:
Zuletzt geändert von Mijikai am 16.03.2018 22:08, insgesamt 2-mal geändert.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [GDI+] GdipFillRectangle Problem!

Beitrag von ccode_new »

Hallo Mijikai,

was verstehst du unter einem falschen Ergebnis ?
Mijikai hat geschrieben:Leider liefert GdipFillRectangle() ein falsches Ergebnis!

Mein Brush hat als Alpha $FF - also undurchsichtig.
Ich sehe auf dem Bild eine undurchsichtige Ellipse und auch ein undurchsichtiges Rechteck.

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
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [GDI+] GdipFillRectangle Problem!

Beitrag von Mijikai »

ccode_new hat geschrieben: Ich sehe auf dem Bild eine undurchsichtige Ellipse und auch ein undurchsichtiges Rechteck.
Das Rechteck ist Transparent die Ellipse nicht - beide sollten undurchsichtig sein.
(Man sieht das Fenster unter dem Rechteck.)

Der Aufruf erfolgt mit dem gleichen Brush deshalbt sollte das Ergebnis identisch sein
was Farbe & Alphakanal belangt.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [GDI+] GdipFillRectangle Problem!

Beitrag von ccode_new »

Ich brauche mal ein bisschen mehr Code.

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
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von Mijikai »

Nach etwas Recherche -> es ist ein Bug! :|
Beste Lösung: Alpha -> $FE
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von ccode_new »

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.
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
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von Mijikai »

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.
Mit Alpha $FE:
Bild

Die *.lib war bei VisualStudio dabei.

Warum schwer ?


Edit:
Danke für den Typ mit den Polygonen werd ich ausprobieren :)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von ccode_new »

Warum schwer ?
Wenn einfach einfach einfach wäre, wäre es auch zu einfach.

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
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von Mijikai »

ccode_new hat geschrieben:
Warum schwer ?
...Mit Puri kann man das ja leider auch viel zu einfach anders lösen.
Ich verstehe nicht was du meinst ?
Wie einfacher ?
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [GDI+] GdipFillRectangle Problem! [gelöst]

Beitrag von ccode_new »

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.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten