gpt4 book ai didi

c# - 当我在我的 WPF 窗口中放置一个文本框或按钮时,它是使用 DirectX 还是 User32 呈现的?

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:58 26 4
gpt4 key购买 nike

我知道 WPF 封装了 DirectX,但我知道我可以用它来渲染 DirectX 或 User32

  • 当我将控件拖到窗口时,DirectX 是默认渲染器吗?
  • 如果没有,我如何强制它使用 User32 进行渲染?
  • 如果需要,我是否需要使用 User32 渲染整个窗口,或者只是我的控件?
  • 最佳答案

    WPF 之前的生活:

    回首过去,不可避免地会发现标准窗口应用程序依赖于 Windows 操作系统的两个磨损严重的部分来创建其用户界面。

    a) User32:为元素提供熟悉的窗口外观。

    b) GDI/GDI+:为渲染形状、文本、图像等提供绘图支持,

    WPF 是否使用 DirectX 或 User32 进行渲染?

    WPF 改变了这一切,与窗口窗体有着根本的不同。 WPF 的底层技术不是 GDI/GDI+,而是使用 DirectX。因此,无论我们创建什么类型的用户界面,WPF 都使用 DirectX。所以就像我们是创建复杂的 3D 图形还是只是绘制一个按钮,所有的绘制工作都必须通过 DirectX 管道。由于 WPF 依赖 DirectX,现在我们也可以利用硬件加速,这意味着这将尽可能多地将工作交给显卡上的专用处理器 GPU(图形处理单元)和我们的 CPU(中央处理单元) 可以休息一下。

    WPF 是否依赖于 User32?

    WPF 仍然依赖 User32 来提供某些服务,例如处理和路由输入以及分清哪个应用程序拥有哪一部分屏幕空间。但是,所有绘图都是通过 DirectX 汇集的。

    这是 WPF 中最显着的变化。 WPF 不是 GDI/GDI+ 的包装器。相反,它是一个替代品——一个通过 DirectX 工作的单独层。

    Can WPF run without DirectX?

    WPF has a dependency on the DirectX runtime. However, both DirectX and WPF have their own software fallback modes so that, in the absence of suitable graphics hardware and/or drivers, software rendering will be used instead. Some graphically intensive features will also be unavailable when software rendering. WPF allows you to check the rendering tier that it's running under and tailor the UI to suit the current environment.



    另外,我建议您快速阅读 HAL 与 HEL,以了解不同的显卡决定了可以通过 DirectX 硬件或软件完成的操作。

    图 1. DirectX 的体系结构及其与 Win32 的关系。

    enter image description here

    在图 1 中,您可能会注意到 DirectX 下有两个层,称为 HEL(硬件仿真层)和 HAL(硬件抽象层)。事情是这样的:DirectX 是一个非常具有前瞻性的设计,因此它假设高级功能是由硬件实现的。但是,如果硬件不支持某些功能,会发生什么?这是双模 HAL 和 HEL 设计的基础。

    HAL 或硬件抽象层是“金属”层。它直接与硬件对话。该层通常是供应商提供的设备驱动程序,您可以通过通用 DirectX 调用直接与其通信。最重要的是,当您请求的功能由硬件直接支持并因此得到加速时,将使用 HAL。例如,当您请求绘制位图时,硬件 blitter 会完成工作,而不是软件循环。

    当硬件不支持您请求的功能时,将使用 HEL 或硬件仿真层。假设您要求视频卡旋转位图。如果硬件不支持旋转,HEL 就会启动并由软件算法接管。显然,这比较慢,但关键是它不会破坏您的程序。它仍然可以工作——只是速度变慢了。此外,HAL 和 HEL 之间的切换对您来说是透明的。如果你要求 DirectX 做某事,而 HAL 直接做,硬件会做。否则,将调用软件仿真来使用 HEL 完成工作。

    引用:

    http://vishalnayan.wordpress.com/2011/05/20/windows-presentation-foundation-what-why-and-when/
    http://www.yaldex.com/games-programming/0672323699_ch05lev1sec1.html

    关于c# - 当我在我的 WPF 窗口中放置一个文本框或按钮时,它是使用 DirectX 还是 User32 呈现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15490299/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com