質問

MSDN ドキュメントは(やや)GDIペンに関する次の2つの事実について明確にします。

  1. 化粧ペン(CreatePenまたはExtCreatePen w / PS_COSMETICを使用して作成)は、幅1 unit でなければなりません(まあ、<!> lt; = 1ですが、行かないでください)。

  2. Geometric(ExtCreatePen w / PS_GEOMETRIC)ペンはソリッドでなければなりません(PS_SOLIDのみ、PS_DASHなしなど)。ただし、より太い線を引くことはできます。 これは、上記のリンクに9xの制限として明確に文書化されています(私は愚かです)。私のコードの(悪い)コメントと(壊れた)ロジックを守るために、そうでないと信じるようになりました。他の一部のグーグル記事は、Windows 9xのみを考慮して書かれている必要があります。

なぜこれらのルールを無効にし、GDIにこれらのペンで楽しく描画させることができますか?

太い(たとえば幅= 10)化粧ペンおよび破線の幾何学的ペンを作成できます。ちなみに、太い破線の幾何学的なペンを作成できます!

これらのペンは正常に動作するようです通常。私が見た唯一の問題は、非常に大きなポイントの配列を渡すときのポリラインです-それは非常にゆっくりとラインをレンダリングします。ただし、ポリラインは一般に大きな配列では奇妙な動作をします。 bad ペンでは動作が異なります。 (他のポリラインの問題は別の質問かもしれません...)

幅の広い化粧ペンまたはパターン付きの幅広Geometricを使用しても安全ですか?

役に立ちましたか?

解決

一般に、文書化されたAPIに従う必要があります。そうしないと、OSバージョン固有の動作に依存する危険があります。

説明するExtCreatePen制限(たとえば、PS_DASHPS_GEOMETRICなし)は、WinNTではなくWin9xにのみ適用されるため、NT / 2000 / XPでは、<!> quot; fat、破線の幾何学的なペン<! > quot;問題になるべきではありません。また、 Polyline にはWin9xにいくつかの制限があることに注意してください。

破線が必要な場合は、デフォルトのPS_USERSTYLEが提供するものに依存するのではなく、ダッシュとギャップの長さを制御するために<=>を使用することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top