问题标签 [drawingvisual]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
76 浏览

.net - 大型绘图视觉与重绘

所以目前我正在考虑

  1. 要么有一个不适合屏幕的大型绘图视觉对象,要么使用滚动查看器移动并查看它

  2. 制作一个滚动条,用一个只包含适合屏幕的数据集部分的新滚动条替换drawingvisual。

哪个是更好的选择?我猜#2更好,因为数据集可能非常大,这会占用大量内存来存储所有必要的数据。

但我认为创建一个新的绘图视觉可能很耗时。清除绘图视觉的孩子比创建一个新孩子更快吗?

0 投票
1 回答
1443 浏览

c# - Shapes 与 DrawingVisual 的性能

MSDN 写道:

DrawingVisual 是一个轻量级的绘图类,用于渲染形状、图像或文本。这个类被认为是轻量级的,因为它不提供布局、输入、焦点或事件处理,从而提高了它的性能。出于这个原因,绘图是背景和剪贴画的理想选择。

我编写了一个代码,通过 Line 对象绘制千行,通过 DrawingVisual 对象在图像上绘制千行。比较两种方式的性能我没有看到差异。在任何一种情况下,滚动最终图片都不够流畅。

为什么每种情况下的滚动延迟都相同,而 DrawingVisual 的性能优势在哪里?

第一种方式

第二种方式

0 投票
1 回答
1065 浏览

wpf - Overlay geometry objects in WPF such that each has the same dimensions but different transformations

I have been stuck with this issue for a week now and have tried multiple approaches.

I have a drawing of a balance scale as shown below. I have split up this image into two such that the base + vertical shaft represent one image while the horizontal bar represents another. I then extract path geometries from both and try to draw them from within a single custom shape or as a visual layer drawing.

As you can imagine, the base+vertical shaft need to stay static while the horizontal bar needs to rotate on its center point up to a certain degree of freedom. The WPF is simply:

Problem: Since I want both geometries to have the same left, top, right, bottom values, I use either a single custom Shape or a single DrawingVisual, try to draw both geometries which works fine. However, when I apply a transform to either one of them, the transform gets applied to both making the base+vertical shaft move as well.

Question: Please note that I am not trying to find a fix to the code I already have since I have tried to ask the question before many times in vain e.g. here. Could someone please explain how to achieve an overlay like this from scratch?

Balance Scale

0 投票
1 回答
2457 浏览

c# - 更改 FormattedText 的文本

我正在使用以下方法将文本写入我的 MainWindow。我的问题是,有没有办法在创建后更改 FormattetText 或绘图视觉的文本?或者如果我想在运行时更新它,我应该使用另一种方法来编写我的文本吗?

0 投票
0 回答
575 浏览

writeablebitmap - RenderTargetBitmap 总是对我的 DrawingVisual 进行抗锯齿处理

我必须将 TextBox 中的文本呈现为 WriteableBitmap。此代码运行良好,但其中的文本模糊或抗锯齿。关于如何保持别名和清晰的任何想法?

我发现没有用:

或者

0 投票
1 回答
882 浏览

wpf - 自定义绘图视觉使应用程序呆滞

我想渲染一条包含数百个点的贝塞尔曲线。这条曲线不需要以任何方式进行测试或交互,所以我想我会尝试一个 Visual,因为它似乎是最轻的。

但是使用下面的代码,为什么会导致应用程序的其余部分运行缓慢?例如,窗口大小调整非常慢。

我只是在寻找在没有任何输入处理功能的情况下渲染曲线的最有效方法(即使使用此示例,您也可以连接到 MouseOver 事件,它只会在您的光标实际位于线条上方时触发,所以它看起来我仍在为此付费(设置 IsHitTestVisiable 似乎对性能没有帮助))

0 投票
2 回答
477 浏览

c# - DrawingVisual 的延迟渲染

我正在尝试更改自定义 WPF 元素以使用可视树,以便可以更改背景层而无需丢弃整个保留的渲染。同时,一个图层可能会受到多个属性的影响,所以我想懒惰地重做渲染,以防多个属性在一个屏幕更新周期中被更改。这就是我所做的。

它似乎运行正确,但在设计器中我得到:

InvalidOperationException:在 OnRender 回调期间无法调用此 API。在 OnRender 期间,只能执行绘制 Visual 内容的绘制操作。

我想在运行时布局过程GetVisualChild在实际渲染之前调用,并且设计画布的操作方式不同?

这是一个合理的尝试吗?我应该如何触发子绘图视觉效果的渲染以确保它在合法时间发生?

0 投票
3 回答
8567 浏览

c# - WPF性能缓慢的原因

我正在使用 WPF 中创建大量文本,DrawText然后将它们添加到单个Canvas.

我需要在每个MouseWheel事件中重新绘制屏幕,​​我意识到性能有点慢,所以我测量了创建对象的时间,它不到 1 毫秒!

那么可能是什么问题呢?很久以前,我想我在某处读到它实际上是Rendering需要时间的,而不是创建和添加视觉效果。

这是我用来创建文本对象的代码,我只包含了基本部分:

每次MouseWheel触发事件时都会运行此代码:

罪魁祸首可能是什么?

我在平移时也遇到了麻烦:

0 投票
0 回答
2737 浏览

wpf - 如何在 wpf 中使用 Drawingvisual?

我有一个显示数千点的屏幕,刷新率为 10 毫秒。首先我遇到了问题,因为渲染速度很慢而且很紧张。我搜索了互联网人们建议我将形状转换为视觉形状,因为形状有很多事件并且渲染起来很重。我将点更改为这样的视觉效果:

性能仍然不能接受。问题是形状和 FrameworkElement 之间有什么区别。两者都有很多使它们难以渲染的事件。我想要一些没有事件的东西。我能做些什么?!

实际上我想将这些视觉效果添加到画布上,并使用 canvas.setLeft 和 canvas.setTop 为它们提供位置。如何在不继承 FrameworkElement 的情况下做到这一点?

0 投票
0 回答
238 浏览

c# - Drawingvisual 使用 Pen 属性中的 Pen

我的主要目标是在我放大画布时更新绘图视觉厚度。如果画布中有太多绘图视觉对象(如 100.000 行),则更新每个绘图视觉对象需要很长时间。所以我决定在我的班级里有一个 Pen 属性,然后用那支笔创建 dravingvisuals。笔粗细属性与画布的缩放比例绑定。这种方式缩放工作得很好,它足够快,并且驱动视觉的厚度正在正确更新。关于这一点的问题是创建 100000 行需要大约 4 分钟的时间。

如果我创建如下图所示的视觉效果来创建 100000 条线,则只需 2 秒。但正如我解释的那样,在缩放时更新厚度将是一个大问题。

我不明白为什么在使用作为已创建属性的笔进行创建时会如此缓慢。