问题标签 [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 回答
977 浏览

c# - 任务中 WriteableBitmap 的 WritePixels

一个小的n00b问题我还是看不懂,很多StackOverflow的答案。

colorData变量是由 Kinect 以 25 次/秒的速度更新的字节数组。没有 UI 组件。

我认为 WriteableBitmap 和 WritePixels 在同一个任务的线程中被调用。但我仍然得到 System.InvalidOperationException。如果为每个循环创建一个新的 WriteableBitmap,则没有错误。

应该如何修复我的代码以有效地重用我的 WriteableBitmap ?

0 投票
1 回答
1273 浏览

c# - 从图像中获取 RGB 颜色百分比

如何使用可写位图从 Windows 应用商店中的图像中获取 RGB 颜色百分比。

在 Windows 应用程序中,我早先得到它是这样的:

如何在 Metro 应用程序中使用可写位图做到这一点?

0 投票
1 回答
1420 浏览

windows-phone-8 - WP8 Cycletile - 将图像和文本渲染成可写位图图像

我目前正在尝试在计划任务代理中实现 CycleTile。我需要这样的大平铺图像:

(左侧图片,自定义背景,右侧文字) http://s7.directupload.net/file/d/3361/54hbvlby_png.htm

我想我必须将所有内容渲染为一个图像并将其设置为 CycleTile 的“CycleImages”......

我当前的代码如下所示:

CycleTile 读取IsolatedStore。

我不知道如何开始...通过渲染 UI 对象或其他方式?!网络并没有为我提供令人满意的结果......

编辑:

运行代码:

0 投票
1 回答
1242 浏览

windows-8 - WritableBitmap 到 RandomAccessStreamReference

我有下一个问题:

我使用 WinRT XAML Toolkit (code1) 制作了屏幕截图

现在我想将此 WritableBitmap 附加到电子邮件(code2)

代码 1

代码 2

这意味着我需要先将图像保存到本地存储,然后读取并附加它。

问题:

1) 如何将 WritableBitmap 保存到应用程序本地存储?

2)也许有办法不保存图像来附加它?

0 投票
2 回答
708 浏览

c# - 锁定和解锁 WritableBitmap

我正在尝试写入 aWritableBitmap并且我想在非 UI 线程中进行数据处理。所以我从 UI 调度程序调用LockandUnlock方法,其余的在不同的线程上完成:

可以从任何线程调用此代码,因为它会在需要时专门调用 UI 调度程序。当我的控制压力不大时,这很有效。但是当我几乎立即每 100 毫秒调用一次时,我会收到InvalidOperationException来自AddDirtyRect以下消息的消息:

{"图像解锁时无法调用此方法。"}

我不明白这怎么会发生。我的调试输出日志显示,Lock我的班级的这个实例确实被调用了。

更新

Image我的整个场景:我正在编写一个允许在 WPF控件中显示浮点矩阵的类。该类FloatingPointImageSourceAdapter允许使用 API 设置数据

它公开了ImageSource一个Image控件Souce属性可以绑定到的。

在内部,这是使用WritableBitmap. 每当用户设置新数据时,我都需要处理像素并将它们重写到缓冲区中。数据计划以高频率设置,这就是为什么我直接写入BackBuffer而不是调用WritePixels. 此外,由于像素的重新映射可能需要一段时间并且图像可能非常大,我想在单独的线程上进行处理。

我决定通过丢帧来应对高压力。所以我有一个AutoResetEvent跟踪用户何时请求更新数据的方法。我有一个后台任务来完成实际工作。

为了勇敢起见,我在这里删除了很多代码。

我的测试创建了一个SetData在特定时间间隔内调用的任务:

ThreadsNumber=1我使用and with运行此测试,SleepTime=100它因上述异常而崩溃。

更新 2

我尝试检查我的命令是否确实是串行执行的。我添加了另一个私有字段

我在我的while循环中操纵它:

我希望如果消息顺序以某种方式搞砸了,我Debug.Assert的 s 会抓住这个。但是柜台的一切都很好。它们根据串行逻辑正确递增,但我仍然从AddDirtyRect.

0 投票
1 回答
270 浏览

c# - 由于 WritableBitmap,WP8(C# 和 Silverlight)出现 OutOfMemoryException

我正在创建一个需要UIElementCanvas. 基本上 aCanvas包含一个集合,UIElement并根据它包含的内容自动在屏幕上呈现/更新它。

为了避免UIElements在屏幕上出现大量相互重叠的人,我更喜欢将它们全部添加到辅助设备上,Canvas然后从中创建一个Image(感谢WritableBitmap)。最后,我将它添加Image到我当前的Canvas. 通过允许我的画布上只有少数图像,我希望有更好的性能。WritableBitmap不幸的是,即使我将其设置为 ,我似乎也无法完全删除null

以下代码说明了它:

WriteableBitmap在创建 24 之类的东西之后会出现OutOfMemoryException。我阅读了很多关于这个问题的文章,就我而言,这似乎WriteableBitmap取决于我的 GraphicCanvas并且仍然存在,因为仍然有对它的引用。我无法删除我的图形画布,也无法将myImage源设置为 null。

我有 2 个问题:

  • 是否有另一种方法可以从 Canvas 或 UIElements 集合创建图像?
  • 是否可以删除使 WriteableBitmap 保持活动状态的引用?

我希望足够清晰和易于阅读。

感谢您的阅读。

用 atomaras 建议编辑,但仍然是同样的问题

WriteableBitmap wb1 = new WriteableBitmap(GraphicCanvas, null); 这一行仍然抛出 OutOfMemoryException。

0 投票
1 回答
106 浏览

windows-phone - 将 WritableBitmap 保存到 IsolatedStorageFileStream

有没有一种简单的方法可以将变量 WriteableBitmap 的内容保存到 IsolatedStorageFile?我正在编写一个程序来处理 WriteableBitmap 中的像素,然后将处理后的位图保存为文件 *.bmp 并将其存储在“保存的图片”目录中。我有将 WriteableBitmap 保存为 jpeg 文件的代码,但正如我之前所说,我不想以任何方式压缩图形。请帮我解决我的问题。

0 投票
0 回答
698 浏览

c# - 没有抗锯齿的 WriteableBitmap

我正在使用http://writeablebitmapex.codeplex.com/ WPF dll。用于在可写位图上绘制对象。现在我不想有抗锯齿像素。

例如我画一个圆圈

我想要锋利的边缘。

为什么我需要那个?我有分辨率为 68 x 42 的 LED 灯条,我编写了一个 WPF 应用程序来控制它们。有什么想法我能做到吗?

更新:我的问题的解决方案很简单,只需设置 RenderOptions

RenderOptions.SetBitmapScalingMode(i, BitmapScalingMode.NearestNeighbor); RenderOptions.SetEdgeMode(i, EdgeMode.Aliased

0 投票
1 回答
515 浏览

windows-8 - 如何将 WritableBitmap 转换为 Base64 字符串

在我的应用程序中,我使用WriteableBitmapRenderExtensions.Render()WinRT XAML 工具包中的方法呈现 xaml 元素。渲染 xaml 控件后,我需要以 Base64 字符串的形式将其发送到服务器。如何将此 WritableBitmap 类转换为 Base64 字符串?

0 投票
1 回答
142 浏览

c# - 2D 图形矩阵模糊

我正在开发一个名为 Matrix2D 的用户控件,以在 ax,y 自定义图形中显示二维矩阵点。

奇怪的是,如果我将 Auto 设置为 Width/Height,则将列/行设置为包含此 Matrix2D 控件的 Grid,如下所示:

我得到了预期的结果(干净的像素):

预期结果 - 像素干净

如果我设置 Horizo​​ntalAlignment="Left" 和 VerticalAlignment="Top",我也会得到预期的结果,如下所示:

虽然,如果我没有将 Auto 设置为 Grid,也不会设置 Alignment,如下所示:

我得到这个模糊结果:

模糊结果

我已经测试了几种开发此用户控件的方法,结果始终相同。

这是当前版本:

在后面的代码中:我填充了一个 WriteableBitmap,然后我用它设置了 populationImg.Source。

已经测试了设置 RenderOptions.BitmapScalingMode="NearestNeighbor" 的技巧,但结果是近似的,因为这是一个科学图形,我需要它是准确的。您可以检查此结果的不准确的角落:

结果不准确

在较小的图形中更加明显:

结果不准确

设置 RenderOptions.EdgeMode="Aliased" 不会改变任何东西。

更新


这解释了为什么我有这种模糊效果:

为了使图像正确居中,如果图像的像素宽度、高度是均匀的,则容器应该具有均匀的宽度和高度。如果图像具有奇数像素宽度,高度,则包含元素也应该具有奇数宽度,高度。

来自WPF 应用程序中的像素捕捉(在@Nicolas Repiquet 的回答中)

虽然,它实际上并没有帮助我解决我的问题。我希望我的用户控件独立于它的容器。任何想法如何做到这一点?