MSDN 文档(有点) )明确以下关于GDI钢笔的两个事实:

  1. 化妆笔(通过CreatePen或ExtCreatePen创建w / PS_COSMETIC)必须是1 单位宽(好吧,<!> lt; = 1,但我们不要去那里)。

  2. 几何(ExtCreatePen w / PS_GEOMETRIC)笔必须是实心的(仅PS_SOLID,没有PS_DASH等)。但是,它们可以绘制更多的线条。 这在我上面的链接中清楚地记录为仅9x限制(我是愚蠢的)。在我的代码中,我的辩护(坏)评论和(破碎的)逻辑让我相信不然。其他一些谷歌搜索文章必须只用Windows 9x编写。

  3. 为什么我能说出这些规则并让GDI乐意用这些笔画画?

    我可以创建脂肪(例如,宽度= 10)化妆笔虚线几何笔。哎呀,我可以创造一个胖的,虚线的几何笔!

    这些钢笔似乎工作正常通常。当我传递非常大的点阵列时,我看到的唯一问题是在Polyline中 - 它使得线条非常缓慢。但是,Polyline通常会对大型数组采取奇怪的行为 - 它与笔的行为方式不同。 (我的其他折线问题可能是另一个问题......)

    使用宽大的化妆笔或宽几何图案是否安全?

有帮助吗?

解决方案

通常,您应该遵守文档化的API,否则您可能会依赖于操作系统版本特定的行为。

你描述的ExtCreatePen限制(例如,没有PS_DASH with PS_GEOMETRIC)仅适用于Win9x,而不适用于WinNT,所以在NT / 2000 / XP上你的<!>“胖,虚线几何笔<! > QUOT;应该不是问题。另请注意, Polyline 对Win9x有一些限制。

如果你想要虚线,我建议使用PS_USERSTYLE以便控制破折号和间隙的长度,而不是依赖于<=>给你的任何默认值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top