Frage

Die MSDN Dokumentation ist (etwas ) klar über die folgenden zwei Fakten über GDI Stifte:

  1. Ein Kosmetikstift (erstellen über CreatePen oder ExtCreatePen w / PS_COSMETIC) muss 1 Einheit breit (na ja, <= 1, aber wir wollen nicht dorthin gehen).

  2. A Geometric (ExtCreatePen w / PS_GEOMETRIC) Stift muss fest (PS_SOLID nur, kein PS_DASH, etc). Sie können jedoch fetteren Linien zeichnen. Dies ist eindeutig dokumentiert in der Verbindung I, wie oben setzte nur eine 9x Einschränkung (ich bin stumm). Zu meiner Verteidigung (sehr schlecht) und Kommentare (gebrochen) Logik in meinem Code führte mich sonst zu glauben. Einige andere googled Artikel müssen concidering nur Windows 9x geschrieben wurden.

Warum kann ich diese Regeln voilate und habe GDI mit diesem Pens glücklich ziehen?

Ich kann Fett (Breite = 10, zum Beispiel) kosmetische Stifte und gestrichelte Geometrische Stifte erstellen. Heck, ich kann ein Fett schaffen, gestrichelte geometrischen Stift!

Diese Pens scheinen gut zu funktionieren in der Regel . Das einzige Problem, das ich gesehen habe, ist in Linienzug, als ich sehr großen Arrays von Punkten passieren - es die Linien sehr langsam macht. Allerdings Linienzug wirkt seltsam mit großen Arrays im Allgemeinen - es justs wirkt anders mit den schlecht Stiften. (Meine andere Linienzug Probleme können eine andere Frage sein ...)

Ist es überhaupt sicher breite kosmetische Stifte zu verwenden oder breit Geometrische Muster mit?

War es hilfreich?

Lösung

Im Allgemeinen Sie auf die dokumentierte API einhalten sollte, sonst riskieren Sie auf OS-Version ein bestimmtes Verhalten zu verlassen.

Die ExtCreatePen Einschränkungen Sie beschreiben (beispielsweise kein PS_DASH mit PS_GEOMETRIC) gilt nur für Win9x, nicht WinNT, so auf NT / 2000 / XP Ihr "Fett, geometrischen Stift gestrichelte" sollte kein Problem sein. Beachten Sie auch, dass Polyline hat einige Einschränkungen auf Win9x.

Wenn Sie gestrichelte Linien wollen, würde ich vorschlagen PS_USERSTYLE verwenden, so dass Sie die Längen Kontrolle der Striche und Lücken, anstatt sich auf alles, was Standard PS_DASH gibt Ihnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top