- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在 WPF 中构建一个自定义 UI 框架,基本上我会尽可能多地放弃内置布局系统和控件。到目前为止,我一直在直接从 UIElement
分支出来,但由于我已经在进行测量、安排和渲染,我认为我可以通过“更接近于金属”(尤其是在布局/渲染方面)。在保持托管代码并且不害怕自己做肮脏的工作的情况下,可以达到多近?
我现在正在考虑一个原型(prototype)概念,我现在只有一个元素继承自 UIElement:一个 Root
对象,类似于一个精简的 Canvas
,它“托管”我的布局引擎的其余部分,并将相关的 IInputElement
优势引入其中。从那时起,所有元素都将是完全自定义的对象,不会继承 WPF 中的任何内容,而是直接呈现到 Root 的 DrawingContext
中(在其 OnRender
方法中)。
现在我想知道拥有一个 WriteableBitmap
根元素并手动在其上绘制的相对性能,例如使用 WriteableBitmapEx为了方便。没有抗锯齿不是问题,自定义 HitTest 系统也不是问题。
我的想法主要是 WriteableBitmap(Ex) 没有任何 GPU 加速增益的特权,因此当需要重新绘制/转换大面积区域时会[慢很多]。
不过,我确实对“基于像素的渲染引擎中的引擎”有其他需求,所以我仍然对这方面的某些观点感兴趣。
有什么见解吗?
编辑:在这种情况下,SharpDX 怎么样?也许一旦我开始使用它,我还不如使用像 SharpDX 这样的 DirectX 包装器的 WinForms 解决方案(..或者..我想我真正应该做的是注册整个 C++ enchilada , 但不幸的是,我没有时间开始学习 that 在事情中间)..
最佳答案
WriteableBitmapEx 非常快,即使它只是在 CPU 上运行。它用于此高性能图表控件:http://www.scichart.com
您确实也应该检查 Direct3D。您可以获得非常好的性能,但这实际上取决于它的使用方式以及大多数绘制操作是否被缓存以及 CPU-GPU 通信是否尽可能畅通无阻。
关于c# - WriteableBitmap(Ex) 与 DrawingContext 的性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719452/
我正在尝试从控件的左边缘到右边缘绘制图形的不同策略。到目前为止,我们一直在使用具有折线的“ Canvas ”,该折线执行的很好,但仍然可以进行一些改进。 当我尝试使用DrawingContext.Dr
这是我的矩形 protected void DrawRectangle(DrawingContext dc, Point point) { DrawingVis
我想劫持通常的 WPF 渲染以将控件拆分为基元,进行布局管理,为我应用绑定(bind)等。 据我所知,WPF 中的整个渲染归结为在布局管理器计算的位置使用依赖属性系统定义的值渲染图元(文本、图像、直线
我通过直接调用 DrawingContext 上的 DrawLine 来绘制图表。由于我想避免任何抗锯齿功能,因此我尝试将 SnapToDevicePixels=true 放在父 UIElement
有人知道是否有可能将 DrawingContext 保存或转换为 Geometry? 例如之后 using (DrawingContext dc = RenderOpen()) { dc.Dr
我在自定义 FrameworkElement 的 OnRender 方法中绘制图像。我也想画这个图像的阴影。我需要在代码中执行此操作,并且我不想使用 DropShadowBitmapEffect,因为
这是此 question 的跟进. 问题: 我正在尝试使用 DrawingContext 绘制一个实心三角形,它在 DrawingVisual 上呈现 目前,我已经成功地使用以下 C# 代码绘制了三角
所以我使用以下代码从输入表单中获取现有图像和文本,然后将输入表单中的文本放置到现有图像上并将其另存为新图像: using (FileStream output = new FileStream(mat
使用 DrawingContext 类,我已经能够使用 DrawRectangle() 方法成功地将装饰器添加到我的 adornedElement。 是否可以构造一个堆栈面板,其中包含文本框和图像 -
我在 WPF 应用程序中绘制图形,但使用 drawingContext.DrawLine(...) 绘制的线被绘制到子像素边界。 我可以通过创建 Line 对象让它们看起来不错,但我不想在每次视觉对象
这是我的第一个问题,但是我潜伏了很长时间。我将把它分成两部分,一部分解释我在做什么以及为什么我认为这是要走的路,第二部分是我自己无法解决的实际问题。 我在做什么? 我目前正在开发用于渲染旨在实时显示的
这个问题在这里已经有了答案: Set VerticalAlignment in DrawText (2 个回答) 关闭8年前. 我需要将文本垂直对齐到顶部或底部或中心。有 FormattedText.
我有几个由 WPF 形状基元组成的常用符号(例如矩形、直线、路径等)。这些符号当前作为用户控件存储在 xaml 文件中。例如:
下面的 WPF 程序会显示一个如下所示的窗口: 黑色方 block 外的鼠标移动会导致窗口标题随鼠标位置更新。当鼠标进入正方形时停止更新。 我希望 MouseMove 继续触发,即使鼠标在正方形上也是
看图。我希望中间线是一条清晰的 1 像素线。您可以将示例标记复制并粘贴到 kaxaml 中。 alt text http://img832.imageshack.us/img832/1704/line
当我画这样的东西时(这里只是随机画): public partial class MainWindow : Window { public MainWindow() {
有没有办法获取WriteableBitmap的DrawingContext(或类似的东西)? IE。允许您调用简单的 DrawLine/DrawRectangle/etc 类型的方法,而不是直接操作原
我有一个 Canvas,在 XAML 中应用了比例转换。使用 DrawingContext 我在 Canvas 上画线。我现在需要在屏幕上添加文本。我认为对于格式化文本我可以应用翻译,但格式化文本或
当我在我的 Canvas 对象(它扩展了 Canvas )上单击并拖动时,我正在绘制一个选择框。我已经像这样覆盖了 OnRender 方法: protected override void O
我有一个 TextBlock。我想在其中绘制(在其当前 视觉边界内)。我需要它的 DrawingContext。 如何获取 DrawingContext? (MSDN 说任何 FrameworkEle
我是一名优秀的程序员,十分优秀!