问题标签 [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# - 任务中 WriteableBitmap 的 WritePixels
一个小的n00b问题我还是看不懂,很多StackOverflow的答案。
该colorData
变量是由 Kinect 以 25 次/秒的速度更新的字节数组。没有 UI 组件。
我认为 WriteableBitmap 和 WritePixels 在同一个任务的线程中被调用。但我仍然得到 System.InvalidOperationException。如果为每个循环创建一个新的 WriteableBitmap,则没有错误。
应该如何修复我的代码以有效地重用我的 WriteableBitmap ?
c# - 从图像中获取 RGB 颜色百分比
如何使用可写位图从 Windows 应用商店中的图像中获取 RGB 颜色百分比。
在 Windows 应用程序中,我早先得到它是这样的:
如何在 Metro 应用程序中使用可写位图做到这一点?
windows-phone-8 - WP8 Cycletile - 将图像和文本渲染成可写位图图像
我目前正在尝试在计划任务代理中实现 CycleTile。我需要这样的大平铺图像:
(左侧图片,自定义背景,右侧文字) http://s7.directupload.net/file/d/3361/54hbvlby_png.htm
我想我必须将所有内容渲染为一个图像并将其设置为 CycleTile 的“CycleImages”......
我当前的代码如下所示:
CycleTile 读取IsolatedStore。
我不知道如何开始...通过渲染 UI 对象或其他方式?!网络并没有为我提供令人满意的结果......
编辑:
运行代码:
windows-8 - WritableBitmap 到 RandomAccessStreamReference
我有下一个问题:
我使用 WinRT XAML Toolkit (code1) 制作了屏幕截图
现在我想将此 WritableBitmap 附加到电子邮件(code2)
代码 1
代码 2
这意味着我需要先将图像保存到本地存储,然后读取并附加它。
问题:
1) 如何将 WritableBitmap 保存到应用程序本地存储?
2)也许有办法不保存图像来附加它?
c# - 锁定和解锁 WritableBitmap
我正在尝试写入 aWritableBitmap
并且我想在非 UI 线程中进行数据处理。所以我从 UI 调度程序调用Lock
andUnlock
方法,其余的在不同的线程上完成:
可以从任何线程调用此代码,因为它会在需要时专门调用 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
.
c# - 由于 WritableBitmap,WP8(C# 和 Silverlight)出现 OutOfMemoryException
我正在创建一个需要UIElement
向Canvas
. 基本上 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。
windows-phone - 将 WritableBitmap 保存到 IsolatedStorageFileStream
有没有一种简单的方法可以将变量 WriteableBitmap 的内容保存到 IsolatedStorageFile?我正在编写一个程序来处理 WriteableBitmap 中的像素,然后将处理后的位图保存为文件 *.bmp 并将其存储在“保存的图片”目录中。我有将 WriteableBitmap 保存为 jpeg 文件的代码,但正如我之前所说,我不想以任何方式压缩图形。请帮我解决我的问题。
c# - 没有抗锯齿的 WriteableBitmap
我正在使用http://writeablebitmapex.codeplex.com/ WPF dll。用于在可写位图上绘制对象。现在我不想有抗锯齿像素。
例如我画一个圆圈
我想要锋利的边缘。
为什么我需要那个?我有分辨率为 68 x 42 的 LED 灯条,我编写了一个 WPF 应用程序来控制它们。有什么想法我能做到吗?
更新:我的问题的解决方案很简单,只需设置 RenderOptions
RenderOptions.SetBitmapScalingMode(i, BitmapScalingMode.NearestNeighbor); RenderOptions.SetEdgeMode(i, EdgeMode.Aliased
windows-8 - 如何将 WritableBitmap 转换为 Base64 字符串
在我的应用程序中,我使用WriteableBitmapRenderExtensions.Render()
WinRT XAML 工具包中的方法呈现 xaml 元素。渲染 xaml 控件后,我需要以 Base64 字符串的形式将其发送到服务器。如何将此 WritableBitmap 类转换为 Base64 字符串?
c# - 2D 图形矩阵模糊
我正在开发一个名为 Matrix2D 的用户控件,以在 ax,y 自定义图形中显示二维矩阵点。
奇怪的是,如果我将 Auto 设置为 Width/Height,则将列/行设置为包含此 Matrix2D 控件的 Grid,如下所示:
我得到了预期的结果(干净的像素):
如果我设置 HorizontalAlignment="Left" 和 VerticalAlignment="Top",我也会得到预期的结果,如下所示:
虽然,如果我没有将 Auto 设置为 Grid,也不会设置 Alignment,如下所示:
我得到这个模糊结果:
我已经测试了几种开发此用户控件的方法,结果始终相同。
这是当前版本:
在后面的代码中:我填充了一个 WriteableBitmap,然后我用它设置了 populationImg.Source。
已经测试了设置 RenderOptions.BitmapScalingMode="NearestNeighbor" 的技巧,但结果是近似的,因为这是一个科学图形,我需要它是准确的。您可以检查此结果的不准确的角落:
在较小的图形中更加明显:
设置 RenderOptions.EdgeMode="Aliased" 不会改变任何东西。
更新
这解释了为什么我有这种模糊效果:
为了使图像正确居中,如果图像的像素宽度、高度是均匀的,则容器应该具有均匀的宽度和高度。如果图像具有奇数像素宽度,高度,则包含元素也应该具有奇数宽度,高度。
来自WPF 应用程序中的像素捕捉(在@Nicolas Repiquet 的回答中)
虽然,它实际上并没有帮助我解决我的问题。我希望我的用户控件独立于它的容器。任何想法如何做到这一点?