问题标签 [writeablebitmap]

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 回答
2811 浏览

c# - C# 将步幅/缓冲区/宽度/高度转换为位图

我有一个图像宽度/高度/步幅和缓冲区。

如何将此信息转换为 System.Drawing.Bitmap?如果我有这 4 个东西,我可以恢复原始图像吗?

0 投票
2 回答
8321 浏览

c# - 在 Metro Windows 8 中将 ImageSource 转换为 WriteableBitmap

我想知道如何将ImageSource对象(在我的情况下是图像元素的源属性)转换为WriteableBitmap. 构造WriteableBitmap(BitmapSource)函数在 Windows 8 Metro 中不起作用,所以我不能这样做。

我试图将ImageSource对象加载到流中然后使用WriteableBitmap.SetSource(stream),但我也不知道如何将图像加载到流中。

我还添加了我在网上找到的这个辅助方法:

问题是BitmapImage不再有StreamSource方法了。

0 投票
2 回答
2802 浏览

c# - WriteableBitmap PixelBuffer 流长度太小

我遇到了一个问题,我试图将一个 WriteableBitmap 的像素缓冲区复制到另一个 WriteableBitmap,本质上是提供 WriteableBitmap 对象的副本。但是,当我尝试这样做时,我遇到了第二个 WriteableBitmap 的流长度太短而无法容纳第一个 WriteableBitmap 的所有值的问题。我在下面发布了我的代码。请记住,我正在从网络摄像头捕获原始数据。但是,当我将“ps”对象的流大小与 wb1 和 wb2 进行比较时,ps 的大小比它们都小得多。我感到困惑的是为什么 wb2 流大小小于 wb1。谢谢你的帮助。

0 投票
2 回答
2494 浏览

silverlight - Silverlight:将 byte[] 转换为 BitmapImage 以“灾难性失败”结束

我正在尝试在 Silverlight 中修改 BitmapImage,但碰巧遇到了“灾难性故障”!

首先,我加载一个图像并将其添加到 LayoutRoot。

这工作正常,图像正确显示在屏幕上。

接下来我要修改图像(例如:单击按钮后)。

在按钮单击方法中,首先,我从 LayoutRoot 中取出图像,然后使用 WriteableBitmap 类对其进行修改:

接下来,我使用给定的方法将其保存到字节数组缓冲区中:

这看起来也不错。缓冲区显示所有 ARGB 值,甚至 alpha 值也是通常值 127 的一半,就像它应该的那样!

在下一步中,我想将修改后的数据重新加载到 BitmapImage 中,最后加载到 Image 中,然后再次将其添加到 LayoutRoot 中:

我在这里找到了这段代码:byte[] to BitmapImage in silverlight

作为最后一步,我将再次创建一个 Image 并将其添加到 LayoutRoot (就像我在开始时所做的那样:

但最后一部分永远无法到达,因为发生了“灾难性故障”

行,说:

我不知道出了什么问题。我在这里找到了一篇文章 Silverlight: BitmapImage from stream throws exception (Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))),恰好有相同的异常,但是当我读到它时,似乎他只有在他上传了很多图片,对于少量图片来说,这对他来说效果很好。所以我仍然对如何解决这个问题一无所知?

大家有什么建议吗?谢谢!

0 投票
1 回答
422 浏览

c# - 如何将图像从 PhotoChooserTask 复制到位图

我一直在尝试制作用户从 PhotoChooserTask 中选择的图片的副本,并将其用作我的应用程序中的 hubtile 的背景图像,但我无法找到更合适的方法来完成此操作。到目前为止,我可以将 hubtile 图像设置为 PhotoChooserTask_Completed 响应,但我不知道如何对位图执行复制操作,以便在再次启动或重新激活应用程序时保存此图像。到目前为止,我所拥有的如下:

我创建了一个自定义 TileItem 类来管理 HubTiles 的数据

TileItem.cs

MainPage.xaml.cs

接下来我创建瓷砖并使用自定义设置类来保存我的数据(即现在是位图的“ImageUri”)

然后我负责 PhotoChooserTask 处理程序

最初Settings.shareImage.ValueSettings.linkImage.value已设置,但不会在 PhotoChooserTask_Completed 事件中相应更改或更新。

设置.cs

因此,图像仅在应用程序未关闭时更新(在 PhotoChooserTask_Completed 事件中),然后在重新启动或激活时将它们设置回原始图像。如何相应地复制这些图像,以便从 PhotoChooserTask 中选择的图像可以永久用作ImageUri每个 TileItem 的新图像(根据我的第一个类,现在实际上是位图)?

0 投票
1 回答
660 浏览

windows-phone-7 - 在 WP7 上使用 WriteableBitmap 和 RotateTransform 渲染文本块

似乎在适用于 Windows Phone 的 Silverlight 的 WriteableBitmap 中有一个非常烦人的错误。我有以下代码和 xaml:

这是xaml:

当您单击底部按钮时,顶部按钮将使用复合变换与可写位图一起呈现。每次渲染后,顶部按钮的结果图像都比前一个大。此外,可写位图的 PixelWith 和 PixelHeight 属性值与 Image 对象的 RenderSize 大不相同。有谁知道发生了什么?

0 投票
1 回答
10887 浏览

c# - 将图像加载到 writeablebitmap

所以我试图将图像加载到 WriteableBitmap 中,但我得到了 NullReferenceException。不知道为什么,因为我认为这以前可以工作

BitmapImage b = new BitmapImage(new Uri(@"images/Car.jpg", Urikind.Relative)); WriteableBitmap wb = new WriteableBitmap(b);

就是这样。我将汽车图像作为项目中的资源。它工作正常,因为我可以创建一个 Image 控件并将其源设置为 BitmapImage 并显示它。谢谢

0 投票
0 回答
542 浏览

silverlight - Silverlight WriteableBitmap 未正确转换自定义字体

我们使用自定义字体来表示我们在图表上绘制的道路标志和形状。

最初,我将所有内容绘制到画布上,效果很好,但水平滚动很慢。

然后我通过使用 WriteableBitmap 将画布转换为图像来解决滚动问题,如下所示:

这种转换对画布上的大多数元素都适用,除了使用自定义字体的 TextBlocks。

因此,我得到的不是正确的“自定义字体”图像(字符),而是正常的 Arial 字符,例如“p”、“q”等……

如果我再次显示画布而不是转换后的图像,那么我可以确认自定义字体可以正常工作并正确呈现文本块,所以它似乎不是加载问题......

请帮助或提供一些我可以调查的指示...

先感谢您

编辑:

好的,我在这里找到了一个解决方案,它可以归结为 1. 在进行转换之前创建一个使用该字体的隐藏文本块,或者 2. 创建一个 FontSource。

我使用了第一个,因为它现在更简单。

在控件内部,我添加了以下内容:

0 投票
2 回答
815 浏览

c# - 绘制像素方法中不明确的不安全代码

最近我要做低级图形编程工作(实现光栅图形算法)。这就是为什么我开始寻找有助于在低抽象级别(甚至使用unsafe代码)上绘制图元(线、矩形、椭圆等)的工具(类)。

我考虑是否应该在WPFWindowsFormsWinAPI或其他环境中实现我的算法。现在我要尝试一下WPF。我找到了一些如何在位图上绘制像素的示例,但不幸的是,我在理解此代码时遇到了问题(来自 MSDN 的源代码):

  1. 这条pBackBuffer += column * 4;线是干什么用的?为什么4
  2. 这是什么*((int*)pBackBuffer) = color_data;意思?我知道来自C/C++的指针,但在C#中有IntPtrint*这行int pBackBuffer = (int)writeableBitmap.BackBuffer;表明我们可以平等对待intIntPtr这对我来说也不清楚。
  3. 我应该使用哪种编程环境?WinAPIWPF还是其他?

如果有人能向我解释这个不安全的代码,我将不胜感激。

0 投票
2 回答
2688 浏览

windows-runtime - WinRT:如何将 WriteableBitmap 保存到本地文件夹

如何在 WinRT 中使用 C# 将 WriteableBitmap 保存到本地文件夹?