UWP

Win2D 官方文章系列翻译 - 预乘 Alpha

在计算机绘图中有两种表示颜色值不透明度的方法。Win2D 中两种方法均有所采用。本文旨在解释两种方法之间的区别以及其各自的使用场景。 直接 Alpha (Straight alpha) 当使用直接,亦即线性 Alpha 时: RGB 值指定绘制目标的颜色 Alpha 值指定绘制目标的质密程度 在该方法中,RGB 和 Alpha 通道各自独立发挥作用。它们可以在不互相影响的情况下各自发生改变。要使一个对象淡出,只需保持 RGB 取值不变,逐步减小 Alpha 值即可。 以直接 Alpha 格式实现两种颜色的 Source-over

  • Void²
    Void²
4 min read
UWP

Win2D 官方文章系列翻译 - 像素格式

DirectXPixelFormat 枚举 包含了 Direct3D 和 DXGI 所使用全部各种像素格式,但其中只有部分被 Win2D 所支持 (或被 Win2D 构建的基础—— Direct2D 所支持)。 如果不确定该采用哪种格式,默认选择 B8G8R8A8UIntNormalized 作为像素格式以及 Premultiplied 作为 CanvasAlphaMode (场景 Alpha 模式)适用于大多数场景。 以下列出的所有格式均被 Direct3D 特性等级 11 的 GPU 硬件(

  • Void²
    Void²
2 min read
UWP

Win2D 官方文章系列翻译 - 与 Direct2D 互操作

Win2D 作为 Direct2D 的上层实现,支持与其进行双向互操作。如果你有一个 Win2D 对象,你可以访问到用以实现它的原生 Direct2D 对象;而如果你有一个 Direct2D 对象,只要包装该 Direct2D 对象的 Win2D 对象存在,你也能查找到此 Win2D 对象,或者,当 Win2D 包装对象不存在时,你也可以手动创建一个新的包装器。 互操作使你能够混合搭配使用 Win2D 与 DirectX API。你可以编写一个

  • Void²
    Void²
4 min read
UWP

Win2D 官方文章系列翻译 - 调整控件分辨率

本文旨在讲解如何配置 Win2D XAML 控件使用的分辨率。下文将介绍如何: 使 Win2D 控件运行在固定的分辨率。 通过调整控件 DPI 减少渲染像素数以增强性能。 分辨率与控件缩放 本文中所用的“分辨率”一词,是指位图的尺寸(高宽)。 Win2D XAML 控件绘制的对象均有分辨率和 DPI 这两项属性。对象的 DPI 指示了绘制时其构成像素的密度。 DPI 就像缩放因数 —— DPI 越高则绘制对象构成的像素数越多;反之,DPI 越低,其构成像素数就越少。

  • Void²
    Void²
5 min read
UWP

Win2D 官方文章系列翻译 - 处理设备丢失

“设备丢失”是指 GPU 设备失效无法继续进行渲染的情况。GPU 硬件故障、驱动程序缺陷、驱动程序软件更新或者从一个 GPU 切换到另一个都可能导致此问题。丢失的设备无法使用,此时任何尝试使用设备的 Win2D 都会引发异常。要解决这一问题,应用必须创建新设备再重新创建所有图形资源。 并非所有应用都需要操心如何解决设备丢失的情况。设备丢失是一种比较少见的情况(但愿如此),所以某些开发者就任由应用在此类情况发生时崩溃了。而本文正是为另一些希望应用足够健壮,能够处理设备丢失问题的开发者准备的。 使用 XAML 控件时设备丢失的处理 Win2D (CanvasControl, CanvasVirtualControl and CanvasAnimatedControl)控件能够代替应用自动应对设备丢失的情况。 当检测到设备丢失,这些控件会重建它们的

  • Void²
    Void²
3 min read
UWP

Win2D 官方文章系列翻译 - DPI (每英寸点数)和 DIPs(设备独立像素)

本文旨在解释物理像素与设备独立像素(DIPs, device independent pixels)之间的区别,以及 Win2D 如何处理 DPI (dots per inch/每英寸点数)。 Win2D 被设计为可以自行感知设备环境,以便在各种高低不同 DPI 的设备上呈现正确的视觉表现,故多数应用可以忽略 DIPs 和 DPI 之间的区别。如果你的应用有更多特定需求,或者你希望自行定制默认的感知行为,可以继续阅读下文详述…… 什么是 DPI? DPI 代表“每英寸点数”,该数值可以粗略度量计算机显示器或手机屏幕等显示输出设备上呈现的像素密度。

  • Void²
    Void²
8 min read
UWP

Win2D 官方文章系列翻译 - 避免内存泄漏

在托管 XAML 应用中使用 Win2D 控件时,必须谨慎处理对象引用计数,以免控件不能被垃圾回收器回收。 内存泄漏的发生条件 你正在通过 C# 等 .Net 语言 (非原生 C++)使用 Win2D 你使用了以下任一 Win2D 控件: CanvasControl CanvasVirtualControl CanvasAnimatedControl CanvasSwapChainPanel 你订阅了 Win2D 控件的事件(如 Draw, CreateResources, SizeChanged...) 你的应用在多个 XAML

  • Void²
    Void²
4 min read
UWP

Win2D 官方文章系列翻译 - 幕后绘制

应用有时需要将图形绘制到并不立即显示的目标上。此类绘制动作被称作“幕后绘制”或“绘制到纹理”。当应用需要将绘制操作输出保存到一个文件、返回为一个像素数组或留作后续操作的输入源时,常需要进行这种幕后绘制。 通过使用 Win2D 中的 CanvasRenderTarget 可以轻松实现以上场景。 CanvasRenderTarget 派生自 CanvasBitmap ,包含一个名为 CreateDrawingSession() 的方法。是用 CreateDrawingSession 方法可以把图形内容绘制到一个 CanvasRenderTarget。例如: CanvasDevice device = CanvasDevice.GetSharedDevice(); CanvasRenderTarget offscreen = new CanvasRenderTarget(device,

  • Void²
    Void²
2 min read