问题标签 [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.

0 投票
2 回答
63 浏览

c# - 为什么我的图像从上到下逐行更新

我有一个带有Image控件的 WPF 应用程序。我正在使用WriteableBitmapto update Image.source,但我不明白为什么我会看到这种奇怪的行为:我的图像分成两部分,顶部以相当慢的速度缓慢移动到循环底部。在此处输入图像描述 我不明白为什么会这样。顶部和底部实际上是同一个框架,因为我可以看到它们的实时更新。

我的代码:

我尝试使用frame.dispatcher.invoke-> 相同的结果。尝试Marshal.Copy->相同的结果..

0 投票
1 回答
953 浏览

c# - WritableBitmap 更改后界面中的图像未更新

每次移动鼠标指针时,我都会尝试通过绘制圆圈来更新图像。pixelBuffer 存储在mapobject 中并使用CircleFilledWithGradientMethod(). 我将像素缓冲区加载到WriteableBitmap Bitmap然后尝试通过将我的 XAML UI 中的图像元素的图像源设置为位图来显示它。发生的情况是,当我第一次移动鼠标时,我看到了前两个圆圈,但是当我移动鼠标时,图像没有更新。为什么会这样?有没有我应该调用的方法Image来强制它重绘?我使用stream.WriteAsync两次的原因,而我本来可以只使用一次,只是为了表明它工作正常。

我认为正在发生的事情是,一旦我在屏幕上绘制图像,它就会缓存它,然后继续使用旧图像。还是标准的 Image 元素不支持重绘?

更新:我Bitmap是一个私有类变量。如果我做

这一切都开始起作用了,但那不是内存效率低下吗?WriteableBitmap每次移动鼠标时,我不是为每个新分配内存吗?正如我发现的那样,问题肯定出在 Image 组件上。为什么当我只更改它的源时它不会更新,但是当我将它的源更改为不同的对象时它会更新。`

0 投票
1 回答
2927 浏览

c# - 使用 WriteableBitmap、C# WPF 在画布上绘图

希望您能够帮助我。我正在尝试使用 WriteableBitmap 类在我的画布上绘制点,但在执行时没有显示任何内容我已经查看了类似的问题,但似乎没有任何效果。这是我的代码;

...和 ​​C# 函数;

我的想法是我会在 XAML 底部的矩形中绘制一个带有 writeableBmp.SetPixel 的信号,但是目前我无法在画布上的任何地方绘制任何东西。

提前致谢

0 投票
1 回答
1584 浏览

c# - 设置 Image.Source 后更新 WritableBitmap

我正在尝试对WritableBitmap位图图像进行一些像素级操作。但我无法让它工作。我想要做的是在我用我的位图WritableBitmap分配Image.Source属性之后操作像素数据。我用谷歌搜索了我唯一发现的东西是对bitmap.Invalidate()方法的调用,但它似乎已被弃用,因为我在类中找不到该方法。WritableBitmap以下是我用来更新图像但没有运气的代码:

对此有什么想法吗?

编辑

我将不胜感激任何关于在 WPF中进行FASTWritableBitmap 2D 绘图的其他方式的建议。

0 投票
0 回答
587 浏览

c# - UWP - 从字节数组加载 WritableBitmap 返回奇怪的图像

我有一张InkCanvas图纸,我将其转换为WriteableBitmap并设置ImageSource如下:

这很好用。

现在我需要将其WriteableBitmap作为字节数组存储在数据库中,以便将其用作GridView项目的图像源。这是我用来将位图转换为字节 [] 的方法:

而这个恢复位图形式的字节[]:

现在这里的屏幕截图描述了从 InkCanvas 检索和从 byte[] 检索后图像的外观:

在此处输入图像描述

如果有人遇到这个问题并有解决方案,将不胜感激。

0 投票
1 回答
265 浏览

c# - WPF 应用程序中 BitmapSource 的 OutOfMemory 异常

任务:我有两台显示器。我需要在#1 上展示#2 发生了什么。换句话说,第一台显示器只不过是第二台的反射器。

当前解决方案:每隔约 100 毫秒制作一次屏幕截图并重新渲染。以下方法负责捕获屏幕截图:

之后,我使用 Start(...) 方法将我的“反射”从第二个屏幕运行到第一个屏幕:

问题:经过大约 30-40 秒的相当不错的运行后,它会因 OutOfMemoryException 而失败。我在这里调查了一些帖子,但没有发现任何关于我的问题。

0 投票
2 回答
76 浏览

xaml - Windows Phone 8.1 中的签名捕获

我很惊讶在 Windows Phone 8.1 中找不到任何用于捕获签名的解决方案。到目前为止,我在 StackOverflow 中只找到了一个……但它抱怨 WriteableBitmap.DrawLine 方法不可用。

来自上述链接的代码:

0 投票
1 回答
662 浏览

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 像素后备存储,即使在调整控件大小时也是如此。

我尝试使用两者OnRenderLayoutUpdated触发创建一个新的大小匹配的 WriteableBitmap,但它们都非常慢。可能是因为设置 Image.Source 正在触发重新布局。

有任何想法吗?

0 投票
0 回答
257 浏览

c# - 在 WritableBitmap 上呈现帧时出现 System.AccessViolationException

我在可写位图上渲染视频帧,一段时间后应用程序随机崩溃,正在监视内存和 cpu 负载看起来不错

帧被抓取并排队等待从线程池线程渲染,并在调度程序上调用以下代码

当我检查 Windows 日志以获取崩溃报告时,我得到了以下跟踪

0 投票
0 回答
138 浏览

c# - WriteableBitmap 不要让我画一个矩形 (AccessViolationException)

我有一个 wpf UserControl 应该画一个小图表。UserControl 在网格内多次呈现。不幸的是,当 UserControl 多次可见时,我得到一个 AccessViolation 异常。

在其他一些绘图(仅 FillRectangle 调用)之后引发 AccessViolation 异常。

这是代码的样子:

奇怪的是: 当我将最后一行更改为:

一切正常。

这是我第一次使用 WritableBitmap。难道我做错了什么?