问题标签 [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.
wpf - WPF 在 DrawingVisual 中裁剪图像源
我需要在 DrawingVisual 中显示图像源的裁剪区域,但在过去的几个小时里,我只是为应该是一项简单的任务绘制了空白。
我的计划是实现定时动画(用于 HMI 系统),它将拍摄包含各种帧的大图像。根据状态变量,DrawingVisual 将从这个大图像中提取要显示的当前帧 - 因此需要裁剪。
我的代码如下:
但是,在创建裁剪图像后,我收到
“值不在预期范围内”
顺便说一句,该图像是在资源字典(在当前程序集中)中加载的 png 为
然后使用 (ImageSource)FindResource("...
首先,我不理解错误消息,在任何地方都找不到令人满意的解释,其次,为什么执行一个简单的任务这么难?
谢谢你的帮助。
ps 我认为这是由于无法找到资源。但是,如果原始图像源很好,为什么克隆版本的行为会有所不同?pps 删除“bm.BaseUri = ...”行会导致相同的错误。
为了简化事情,我创建了一个测试项目,它只有一个按钮,单击时会尝试创建 CroppedBitmap。
按钮点击 =
资源字典引用位图:
并包含 App.xaml
BitmapSource (i) 有效并且对 CroppedBitmap 的调用会引发 ArgumentException,“值不在可接受的范围内”。
创建或尝试创建裁剪图像肯定不会比这更简单吗?
另一个我从 MSDN 上取下的例子
新的 CroppedBitmap 再次抛出 InvalidArgument 异常
有什么想法吗?
谢谢
wpf - WPF Canvas,框架元素有红色边框
我正在使用画布来承载各种框架元素。每个框架元素本身都是 DrawingVisual 的宿主。
在设计时添加的每个框架元素在运行时在画布中看起来都很好(即如预期的那样)。
对于那些在运行时添加的框架元素(canvas.children.add(new myframework...),它们都有一个红色边框。我强调我绝对没有绘制这个边框 - 我什至删除了所有绘图指令和每个控件仍然有一个红色边框。如果我重新引入绘图指令,这个红色边框会出现在我的绘图上方,所以它似乎是 WPF 正在做的事情。
不涉及 XAML - 它只是一个承载 Canvas 的 UserControl,并且在此画布上添加了框架元素。控件都包含在画布的边界内,并且不重叠。
有人可以解释为什么会出现这个边界以及如何摆脱它。
谢谢
c# - 显示 VisualCollection 和 UIElements
我正在使用 VisualCollection 在 WPF 中的 Canvas 上显示自定义 DrawingVisuals,并且我还需要画布来显示几个 UIElements。问题是画布在使用 VisualCollection 时似乎忽略了它的常规子级。UIElements 在放置在 VC 中时也不会出现。
我希望 UIElements 呈现在 DrawingVisuals 之上,所以我不能(?)将 DV 放在 AdornerLayer 中。有任何想法吗?
c# - WPF中RenderTargetBitmap中图像的宽度和高度
使用我正在绘制的以下代码,DrawingVisual
然后将其渲染为Image
using RenderTargetBitmap
。最后Image
添加到 aCanvas
并显示在屏幕上。
我的问题是方法想要的pixelWidth
andpixelHeight
参数。RenderTargetBitmap
我应该赋予它什么价值?我注意到,如果我给它较低的数字,则不会渲染图像的部分。我应该根据什么来选择这些?我在下面的代码中给了它 1000。
c# - 更改在 DrawingVisual 上绘制的本地类的属性
我已经定义了一个Drawing
派生自FrameworkElement
. 我正在使用它来绘制DrawingVisual
. 在我XAML
的课程中,我已经包括了这个本地课程。
现在我的问题是如何将此类的属性绑定到变量,或者我什至如何更改它们?
例如,假设我想更改width
属性。我Button
在我的上面加上了一个XAML
并试图改变width
但没有任何反应。
所有必需的代码如下:
c# - DrawingVisual 上的位图缓存部分模糊
最近我切换到DrawingVisuals
提高趋势图的性能(尤其是缩放和平移)。
这是我的代码:
这是ImprovedDrawingVisual
:
现在,几何图形确实有Transforms
,这可能很重要。
发生的情况是,在没有位图缓存(1 px 线)的情况下,图表绘制得很好,但是当我打开位图缓存时,图表的某些部分有时会变得模糊。
有谁知道我该如何解决这个问题?我尝试更改RenderAtScale
或DrawingVisual
关闭EdgeMode
设置,但这无济于事。
编辑:省略画笔填充几何图形以避免混淆,因为它在这里不相关。
c# - 仅为所需的 Canvas Size 将 Canvas 保存到 BMP
我有一个画布,里面有不同的物体,可以移动..
然后我想将画布保存到 BMP 或 PNG .. 没问题,它可以工作。
但是如果画布之外有一些对象,输出图像将具有所需的画布大小,但在外部元素内。
我想准确地打印所需的尺寸,不多也不少.. :)
我认为这是一个衡量和安排问题,但不知道它是如何工作的..
遵循代码和“错误图像导出”的示例图像!
所有在垂直白线的右侧不应该出现在图片上!
.net - 在 WPF 中绘制线条 - DrawingVisual 性能问题
我已经实现了两个版本的线条绘制代码 - 一个使用 WPF 形状(线条),另一个使用 StreamGeometry 和 DrawingVisual。
DrawingVisual 应该更快,但我发现正好相反。包含 DrawingVisual 对象的主机窗口的初始绘制和随后调整大小非常缓慢且不稳定,比 WPF 线条示例差得多。
我究竟做错了什么?
WPF 行代码:
绘图视觉代码:
绘图可视化宿主控件:
将 VisualHost 分配给网格:
c# - RenderTargetBitmap : 无法释放/处置句柄
对不起,我的英语不好。
我想将 DrawingVisual 渲染为位图,以便创建 DiffuseMaterial。我这样做:
但...
- 如果我使用 GetDiffuseMaterial 方法 10000 次,应用程序就会停止。这是“正常的”,因为每个应用程序最多可以有10000 个 GDI 句柄,而 RenderTargetBitmap 每次创建时使用 1 个 GDI 句柄。
解决此问题的方法是释放 RenderTargetBitmap 对象。但我没来得及做。我试过这个(在 mat.Freeze() 和 return mat; 之间):
/li>另一种方法是只有一个 RenderTargetBitmap 并将其作为参数提供给 GetDiffuseMaterial。
但是如果我调用两次 GetDiffuseMaterial,我将有两个相同的材质,因为句柄是共享的,材质采用最后修改。(所以即使文本参数不一样!)
我看不到用 RenderTargetBitmap 做我想做的另一种方法。
注意:GetDiffuseMaterial 可以调用 100 万次...
RenderTargetBitmap 是我发现从字符串文本创建 DiffuseMaterial 的最快方法。其他技术真的很慢:使用带有 TextBlock 的 VisualBrush,使用 DrawingBrush,... 例如:使用 RenderTargetBitmap 对 GetDiffuseMaterial 的 5000 次调用至少比其他技术快 10 倍。
谢谢您的帮助。
c# - 如何在 DrawingVisual 中用毫米单位而不是像素绘制一些东西?
我试图在 a 中画一些东西,System.Windows.Media.DrawingVisual
但我需要以毫米为单位画薄。我怎样才能做到这一点?