代码之家  ›  专栏  ›  技术社区  ›  Aardvark

使用不支持的win32 gdi pens模式时出现问题?

  •  1
  • Aardvark  · 技术社区  · 16 年前

    MSDN documentation 是否(稍微)清楚以下关于GDI笔的两个事实:

    1. 化妆笔(通过create pen或extcreatepen w/ps_cosmetic创建)必须为1 单元 宽(好吧,<=1,但我们不要去那里)。

    2. 几何(extcreatepen w/ps_geometric)笔必须为实心(仅限ps_solid,无ps_dash等)。然而,他们可以画出更粗的线。 我在上面的链接中清楚地记录了这一点,因为这只是一个9倍的限制(我很笨)。在我的辩护中(坏的)评论和代码中(坏的)逻辑导致了我的信仰。其他一些谷歌文章一定是只写了简明的Windows9x。

    为什么我能说出这些规则,让GDI愉快地用这些笔画画?

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

    这些笔好像很管用 通常 . 我所看到的唯一问题是,当我通过非常大的点数组时,折线的效果非常慢。然而,一般来说,折线在大型阵列中的作用是奇怪的——它的作用与 坏的 钢笔。(我的其他折线问题可能是另一个问题…)

    用宽的化妆笔安全吗 或者宽几何图案?

    1 回复  |  直到 14 年前
        1
  •  1
  •   ChrisN    16 年前

    一般来说,您应该遵守文档化的API,否则您将面临依赖于操作系统版本特定行为的风险。

    这个 ExtCreatePen 您描述的限制(例如,否 PS_DASH 具有 PS_GEOMETRIC )只适用于Win9x,不适用于Winnt,所以在NT/2000/XP上,你的“胖的,虚线的几何笔”不应该是问题。还要注意 Polyline 对Win9x有一些限制。

    如果你想要虚线,我建议你用 PS_USERSTYLE 这样就可以控制破折号和间隙的长度,而不是依赖于任何默认值。 皮斯达什 给你。