【问题标题】:Nine-Patch Image in Windows PhoneWindows Phone 中的九补丁图像
【发布时间】:2012-10-03 02:43:51
【问题描述】:

在 Windows Phone UI 设计原则中,MS 建议使用纯色矩形或编码渐变控制背景,以避免多屏不兼容。但在很多需求中,使用图像作为控制背景是必要的。然后,使用 9-patch 图像技术。在 Android 和 IO 中,它是核心支持,但在 WP 中则缺乏。我尝试通过 3 种方法在 WP 中使用它:

  1. 使用 9 单元格网格:将图像剪辑成 9 个补丁并将它们放置到单元格中。它工作正常,但我担心当有很多控制时应用程序性能会降低。

  2. 使用自定义画笔:仅自定义画笔将 9-patch 图像绘制为 ImageBrush,但似乎 MS 不允许自定义画笔。

  3. 使用 FramworkElement:像 Rectangle、Ellipse... 我想创建一个 FrameworkElement 可以绘制 9-patch 图像。但是,不能使用低级渲染。

如何实施第二种和第三种方法?

【问题讨论】:

    标签: silverlight windows-phone-7 nine-patch brush frameworkelement


    【解决方案1】:

    我为 Windows Phone 创建了一个与 Android NinePatchDrawable 完全一样的库。你只需要设置一个位图image.9.png,宽度和高度......就完成了!你有你新的图像缩放到你想要的大小。好好享受 :)。将来我会添加更多选项:)。

    GitHub link

    【讨论】:

      【解决方案2】:

      您可以通过使用 WriteableBitmap 来弥补低级渲染和自定义画笔的不足:http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(v=vs.95).aspx

      这样,您可以完全控制如何渲染背景,然后可以将其分配给单个 Image 控件。但它比“使用带有 9 个图像控件的网格”方法复杂得多,而且性能提升可能微不足道。

      【讨论】: