Hallo
Ich habe gerade ein Problem beim Zeichnen mit GDI+.
Zuerst habe ich ein Projekt erstellt, in dem alles in einem ist.
Zykloide Formen werden auf der Form gezeichnet.
SmoothingMode ist auf Antialias gestellt.
Soweit sogut, alles funktioniert bestens.
Aber jetzt wollte ich den Teil, bei dem gezeichnet wird auslagern in eine Dll.
Das funktioniert auch bis zu einem gewissen Punkt problemlos.
In der Dll wird genau das Selbe gemacht wie in dem anderen Projekt:
Ein Timer inkrementiert zwei Werte und invalidiert die übergebene Form; In der mit dem Paint Event verknüpften Sub wird das Errechnete gezeichnet (mit Antialias). Ein paar Unterschiede gibt es natürlich: Eine Referenz zur Form wird zum Zeichnen übergeben. Und der Mittelpunkt wird nicht mehr in Variablen zwischengespeichert (ich erhoffte mir eine Geschwindigkeitsverbesserung), sondern direkt per Form.ClientRectangle.Width / 2 (und mit Height) ausgerechnet. Und für X und Y gibt es getrennte Faktoren. Aber in diesem Beispiel haben beide den selben Wert (1).
Das funktioniert gut, bis ich die Form auf mindestens den halben Bildschirm (1366 x 768) vergrößere. Dann werden immer bei bestimmten Positionen Linien nicht gezeichnet.
Das passiert nur mit SmoothingMode auf Antialias. Wenn nichts angeben wird tritt dieses Problem nicht auf. Also wird es an den Berechnungen meinerseits nicht liegen.
Siehe Screenshot: Links Projekt mit Alles in Einem (Antialias ein), Rechts Projekt mit Dll (Antialias ein).
Dagegen hier: Links Projekt mit Alles in Einem (Antialias ein), Rechts Projekt mit Dll (Antialias aus).
Wieder ein Bug von MS?
Ich habe gerade ein Problem beim Zeichnen mit GDI+.
Zuerst habe ich ein Projekt erstellt, in dem alles in einem ist.
Zykloide Formen werden auf der Form gezeichnet.
SmoothingMode ist auf Antialias gestellt.
Soweit sogut, alles funktioniert bestens.
Aber jetzt wollte ich den Teil, bei dem gezeichnet wird auslagern in eine Dll.
Das funktioniert auch bis zu einem gewissen Punkt problemlos.
In der Dll wird genau das Selbe gemacht wie in dem anderen Projekt:
Ein Timer inkrementiert zwei Werte und invalidiert die übergebene Form; In der mit dem Paint Event verknüpften Sub wird das Errechnete gezeichnet (mit Antialias). Ein paar Unterschiede gibt es natürlich: Eine Referenz zur Form wird zum Zeichnen übergeben. Und der Mittelpunkt wird nicht mehr in Variablen zwischengespeichert (ich erhoffte mir eine Geschwindigkeitsverbesserung), sondern direkt per Form.ClientRectangle.Width / 2 (und mit Height) ausgerechnet. Und für X und Y gibt es getrennte Faktoren. Aber in diesem Beispiel haben beide den selben Wert (1).
Das funktioniert gut, bis ich die Form auf mindestens den halben Bildschirm (1366 x 768) vergrößere. Dann werden immer bei bestimmten Positionen Linien nicht gezeichnet.
Das passiert nur mit SmoothingMode auf Antialias. Wenn nichts angeben wird tritt dieses Problem nicht auf. Also wird es an den Berechnungen meinerseits nicht liegen.
Siehe Screenshot: Links Projekt mit Alles in Einem (Antialias ein), Rechts Projekt mit Dll (Antialias ein).
Dagegen hier: Links Projekt mit Alles in Einem (Antialias ein), Rechts Projekt mit Dll (Antialias aus).
Wieder ein Bug von MS?
"Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils