问题标签 [writablebitmap]
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.
c# - WritableBitmap 更改后界面中的图像未更新
每次移动鼠标指针时,我都会尝试通过绘制圆圈来更新图像。pixelBuffer 存储在map
object 中并使用CircleFilledWithGradientMethod()
. 我将像素缓冲区加载到WriteableBitmap Bitmap
然后尝试通过将我的 XAML UI 中的图像元素的图像源设置为位图来显示它。发生的情况是,当我第一次移动鼠标时,我看到了前两个圆圈,但是当我移动鼠标时,图像没有更新。为什么会这样?有没有我应该调用的方法Image
来强制它重绘?我使用stream.WriteAsync
两次的原因,而我本来可以只使用一次,只是为了表明它工作正常。
我认为正在发生的事情是,一旦我在屏幕上绘制图像,它就会缓存它,然后继续使用旧图像。还是标准的 Image 元素不支持重绘?
更新:我Bitmap
是一个私有类变量。如果我做
这一切都开始起作用了,但那不是内存效率低下吗?WriteableBitmap
每次移动鼠标时,我不是为每个新分配内存吗?正如我发现的那样,问题肯定出在 Image 组件上。为什么当我只更改它的源时它不会更新,但是当我将它的源更改为不同的对象时它会更新。`
c# - 使用 WriteableBitmap、C# WPF 在画布上绘图
希望您能够帮助我。我正在尝试使用 WriteableBitmap 类在我的画布上绘制点,但在执行时没有显示任何内容我已经查看了类似的问题,但似乎没有任何效果。这是我的代码;
...和 C# 函数;
我的想法是我会在 XAML 底部的矩形中绘制一个带有 writeableBmp.SetPixel 的信号,但是目前我无法在画布上的任何地方绘制任何东西。
提前致谢
c# - 设置 Image.Source 后更新 WritableBitmap
我正在尝试对WritableBitmap
位图图像进行一些像素级操作。但我无法让它工作。我想要做的是在我用我的位图WritableBitmap
分配Image.Source
属性之后操作像素数据。我用谷歌搜索了我唯一发现的东西是对bitmap.Invalidate()
方法的调用,但它似乎已被弃用,因为我在类中找不到该方法。WritableBitmap
以下是我用来更新图像但没有运气的代码:
对此有什么想法吗?
编辑
我将不胜感激任何关于在 WPF中进行FASTWritableBitmap
2D 绘图的其他方式的建议。
c# - WPF 应用程序中 BitmapSource 的 OutOfMemory 异常
任务:我有两台显示器。我需要在#1 上展示#2 发生了什么。换句话说,第一台显示器只不过是第二台的反射器。
当前解决方案:每隔约 100 毫秒制作一次屏幕截图并重新渲染。以下方法负责捕获屏幕截图:
之后,我使用 Start(...) 方法将我的“反射”从第二个屏幕运行到第一个屏幕:
问题:经过大约 30-40 秒的相当不错的运行后,它会因 OutOfMemoryException 而失败。我在这里调查了一些帖子,但没有发现任何关于我的问题。
xaml - Windows Phone 8.1 中的签名捕获
我很惊讶在 Windows Phone 8.1 中找不到任何用于捕获签名的解决方案。到目前为止,我在 StackOverflow 中只找到了一个……但它抱怨 WriteableBitmap.DrawLine 方法不可用。
来自上述链接的代码:
c# - 如何有效地拥有一个与 WPF 控件像素 1:1 匹配的 WritableBitmap?
我正在使用 WritableBitmap 在 WPF 中绘制快速的 2d 图形。
问题是,我的 WritableBitmap 与 Image 控件 1:1 的像素大小不匹配。当我尝试根据 Image 控件的大小更改事件制作新的 WritableBitmap 时,性能很糟糕。
如何使用 WritableBitmap 以 1:1 呈现 WPF 控件的像素?
您可以在 github 上看到我的代码的 WPF 和 Windows.Forms 版本。
该应用程序是一个名为 SoundLevelMonitor 的小型迷你应用程序,它监控应用程序的音频电平并绘制带有图例的连续移动图形。下面是 Windows.Forms 版本的屏幕截图。WPF 版本基本相同,只是图像是固定大小并拉伸以适合窗口。
在开始使用 WritableBitmap 之前,我尝试使用 UIElement,但绘图性能很糟糕。一个问题是触发重绘需要InvalidateVisual()
导致缓慢的重新布局。另一个问题是使用 DrawingContext 绘制文本非常慢。
所以我发现这个建议使用 GDI 写入 WriteableBitmap,它实际上工作得很好,而且速度非常快。(WPF 版本感觉比 windows 窗体版本响应更快!)
但是,WriteableBitmap 是一个固定大小的后备存储,WPF 正在按比例放大以适应 Image 控件。我希望 WriteableBitmap 成为控件的 1:1 像素后备存储,即使在调整控件大小时也是如此。
我尝试使用两者OnRender
并LayoutUpdated
触发创建一个新的大小匹配的 WriteableBitmap,但它们都非常慢。可能是因为设置 Image.Source 正在触发重新布局。
有任何想法吗?
c# - 在 WritableBitmap 上呈现帧时出现 System.AccessViolationException
我在可写位图上渲染视频帧,一段时间后应用程序随机崩溃,正在监视内存和 cpu 负载看起来不错
帧被抓取并排队等待从线程池线程渲染,并在调度程序上调用以下代码
当我检查 Windows 日志以获取崩溃报告时,我得到了以下跟踪
c# - WriteableBitmap 不要让我画一个矩形 (AccessViolationException)
我有一个 wpf UserControl 应该画一个小图表。UserControl 在网格内多次呈现。不幸的是,当 UserControl 多次可见时,我得到一个 AccessViolation 异常。
在其他一些绘图(仅 FillRectangle 调用)之后引发 AccessViolation 异常。
这是代码的样子:
奇怪的是: 当我将最后一行更改为:
一切正常。
这是我第一次使用 WritableBitmap。难道我做错了什么?