【问题标题】:Anti-aliased rounded corners in Windows CE 6.0Windows CE 6.0 中的抗锯齿圆角
【发布时间】:2009-04-01 14:03:22
【问题描述】:

我想在运行 Windows CE 6.0 的 ARM 设备上显示一个平滑的圆角矩形。

我从RoundRect 开始,但结果出现了锯齿状的角落,因为Windows CE 使用GDI 和doesn't support GDI+,就像Windows Mobile 5+ 一样。我目前的临时解决方案是创建许多小角位图,但由于 GUI 设计的其余部分包括透明度、渐变填充和可变宽度边框,因此该解决方案意味着创建和管理这些位图的大量排列。

有没有办法在 Windows CE 中获得类似 GDI+ 的图形基元?我可以控制我的 Windows CE 映像,因此我可以根据需要构建任何内容。

【问题讨论】:

    标签: compact-framework windows-ce


    【解决方案1】:

    我不知道 CF 对此的支持如此糟糕。真的没有选择将 GDI+ 放到系统上吗?我没有可用的 Platform Builder,所以我无法自己查看。

    我使用的解决方案是 OpenVG。如果您的设备在硬件中支持它(就像许多 OpenGL ES 2.0 设备似乎支持的那样),它真的很快,并且有一些软件实现也应该运行得足够快(在桌面上,我使用AmanithVG SRE 进行仿真)。不过,我没有在我的 CE 设备上尝试 AmanithVG SRE,我认为您必须联系他们以获取二进制文件(桌面二进制文件可从网站获得)。 如果您的设备有 PowerVR 芯片(例如 TI OMAP35x 有一个),PowerVR 会提供 OpenVG 硬件渲染器(尽管您仍然需要一个用于桌面)。

    OpenVG 有一个丑陋的 API,就像所有 OpenXX API 一样(也就是说,如果你习惯了 .NET BCL),但它们没问题,而且 OpenVG 真的很容易转换为 .NET,因为即使它是程序性的,它或多或少是面向对象的,它们将所有常量都变成了枚举而不是定义。

    【讨论】:

    • 感谢您的推荐,我正在看看 AmanithVG 是否会在我的平台上运行。我是否正确理解您已在具有硬件支持的 CE 设备上运行 OpenVG?
    • 顺便说一句,您的意思是 CE 还是 CF?我碰巧在使用 Compact Framework,但我正在寻找任何我可以 p/invoke 的解决方案。
    • OpenVG 和 OpenGL 一样,是一个过程 C API,但 P/Invoke 很容易。所以我的意思是 CE 和 CF :) 不幸的是,我没有让它在设备上运行,因为我拥有的当前图像上没有 CF 并且我没有 PlatformBuilder。不过,它在同一设备上的 Linux 上运行良好。
    • 我应该在接下来的几天内获得一个新的 CE 映像,以便通过 Compact Framework 使用它。在桌面上,它在 .NET 上运行良好。
    【解决方案2】:

    Windows Mobile 6 Professional 包含一个有限版本的 gdiplus.dll。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2014-02-18
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    相关资源
    最近更新 更多