问题标签 [bitmapframe]

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 投票
1 回答
519 浏览

wpf - WPF ComboBox 中的 BitmapFrame

我有一个对话框,让用户选择一个自定义图标。加载的图标显示在用户进行选择的组合框中。这是组合框的 XAML 代码:

  • Icons是一个返回BitmapFrame数组的属性。
  • Icon是当前选择的属性。

当前不起作用的是,当我通过后面的代码设置 Icon 属性时(例如,当显示用户上次显示对话框时选择的 Icon 时),Combobox 选择只是空白。好像我在调用 OnPropertyChanged 之前已将属性设置为 null。

我目前的理论是 WPF 无法比较 BitmapFrames,因此在遍历列表时,它无法确定那里的任何图标“相等”,因此假定为 null。

简而言之; 通过后面的代码在组合框中设置当前选定的项(即 BitmapFrame)的最佳方法是什么?

0 投票
2 回答
1517 浏览

wpf - 另一个线程中的 BitmapFrame

我正在使用 WPF BackgroundWorker 创建缩略图。我的工作函数看起来像:

当这个函数完成并且在BackgroundWorker“Completed”函数启动之前,我可以在Vs2008的输出窗口中看到,产生了一个异常。看起来像:

生成的异常数量等于要生成的缩略图的数量。

使用“反复试验”方法,我将问题隔离到:BitmapFrame.Create(bi)

删除该行(使我的函数无用)也会删除异常。

我没有找到任何解释,或者在后台线程中创建缩略图的更好方法。

0 投票
2 回答
2836 浏览

wpf - 将 WPF BitmapSource 转换为窗口的图标

我有一个 16x16 .png 文件,我已将其作为 ImageSource (BitmapSource) 加载,当我在 tabcontrol 标头中的 Image 上使用它时它工作正常。

我现在想在用户拖动文档选项卡时在浮动窗口(继承自 WPF Window 类)中使用相同的图像。(这是 AvalonDock,我对其进行了调整以允许标签页眉中的图像)

在网络上进行多次搜索后,我了解到 Window.Icon 需要 BitmapFrame 但所有示例代码似乎都假设 .ico 文件可用,但在我的情况下它不是。

我尝试了以下代码(以及包括克隆、冻结等在内的变体):

但是当调用 Show() 方法时,会抛出异常:“抛出了 'System.ExecutionEngineException' 类型的异常。”

如何动态创建兼容的位图以允许窗口显示图标?

0 投票
1 回答
347 浏览

c# - C# 中的 BitmapFrame 渲染问题(从字节数组创建)

情况如下:

我得到了包含位图标头和位图数据的字节数组。我知道数据的偏移量,我需要生成 BitmapFrame 以供以后渲染。我想避免数组单元复制,并为数组的一部分( ArraySegment )创建了一个包装器。

然后我将此位图与一个图元一起渲染到 RenderTargetBitmap 中,然后使用 CopyPixels 将其保存到同一个数组(代替数据)中。

我注意到,如果我使用数组包装器处理原始数据,我会得到错误的最终图像。但是,如果我将相同的数据复制到另一个数组并将其提供给 BitmapFrame 类的静态 Create 方法,则结果是正确的。

你有什么想法会发生什么吗?

预先感谢您的回复!

干杯

0 投票
1 回答
844 浏览

c# - BitmapMetadata:一些属性清除?

我正在处理这段代码:内部方法调用元数据属性都已填充;但在用户代码中,它们中的大多数都为空。为什么会有这种行为?

在方法内部,元数据属性是:

用户代码:

如您所见,所有属性都存在,但主题:

0 投票
2 回答
2076 浏览

c# - 如何将 byte[] 转换为 BitmapFrame c#

我已经尝试过了,但有异常 - 由于对象的当前状态,操作无效

当我尝试时错误上升

在其他功能中(buff - 准备好了!)

0 投票
0 回答
1301 浏览

c# - WPF - 如何获取图像的 URI 源?

我想获取在 XAML 中创建的图像的 URI 源。图像的来源是 BitmapFrame。我知道您可以将 BitmapImage.UriSource 用于 BitmapImages,但是 BitmapFrames 呢?

要获得我使用的 BitmapFrame:

0 投票
1 回答
2954 浏览

c# - 使用 BmpBitmapEncoder 黑色图像保存 Windows.Media.Drawing - 如何删除 alpha?

我正在使用 SVG# ( http://sharpvectors.codeplex.com/ ) 将 SVG 文件批量转换为其他格式。被转换的 SVG 图像是没有背景的黑色线条图。我对 WPF 或 System.Windows.Media 命名空间几乎没有经验,所以如果这是一个基本问题,请原谅。

我正在使用来自 SVG# 的 ImageSvgConverter 的修改版本,它接受一个 System.Windows.Media.Drawing对象,然后使用System.Windows.Media编码器(BmpBitmapEncoderPngBitmapEncoder)将其转换为所需的文件格式。

当我使用 a 导出时TiffBitmapEncoderorPngBitmapEncoder 或者GifBitmap图像按预期生成。生成的图像都有透明背景。

但是,当我使用JpegBitmapEncoderor导出时BmpBitmapEncoder,所有图像都变黑了。由于 tif、png 和 gif 都具有透明背景,我认为 jpg / bmp 图像被正确绘制,但是,由于这些文件格式不支持 alpha,因此具有黑色输出是有意义的,因为透明度会被解释什么都没有/黑色。

我认为这与这些 SO 帖子中所述来自 BitmapSource 的奇怪 bmp 黑色输出 - 有什么想法吗?将透明PNG转换为具有非黑色背景颜色的JPG,并且在保存位图时背景变为黑色-C#

但是,我看不到将这些帖子应用于我的问题的方法。谁能指出我正确的方向?

我尝试将白色 SolidColorBrush 应用于 DrawingContext 的 PushOpacityMask 方法,但是,这没有区别。

非常感谢任何指示。

0 投票
0 回答
102 浏览

c# - BitmapFrame.Create 无法访问此对象

我正在尝试将多个BitmapSource图像从 png 文件中导出。这是我的代码:

线程调用:

功能:

这样做时,我会Additional information: The calling thread cannot access this object because a different thread owns it.在线收到:var bitmapFrame = BitmapFrame.Create((BitmapSource) currentImage);

我错过了什么?

0 投票
1 回答
322 浏览

c# - C# WPF 释放 BitmapImage 而不使用 FileStream

我的问题:有没有办法将图像加载到不会占用大量内存并且仍然可以删除图像的 BitmapImage 中?阅读下文了解更多详情:

我有一个 PhotoCollection 类:ObservableCollection<Photo>{ },其中 Photo 类创建了一个 BitmapImage 对象:

照片收藏类:

照片类:

当我将计算机上的图像拖放到列表框中时,照片会加载到照片的 PhotoCollection 中并显示在列表框中(感谢 Binding)。如果我丢弃 50MB 的照片,我的程序会占用大约 50MB 的内存。

我遇到的问题是我需要稍后从文件夹中删除这些照片。为此,我必须先卸载或处理内存中的照片,因为 BitmapImage 会锁定文件。我无法弄清楚如何做到这一点。

在找到这个类似的 StackOverFlow 问题后,我认为我的所有问题都已解决。实现 StackOverFlow 问题中的代码:

实现 FileStream 以将图像加载到 BitMapImage 对象中只有一个巨大的问题。我的记忆力猛增!就像 50MB 的照片占用了 1GB 的内存并且加载时间延长了 10 倍:

链接到图片

重申我的问题:有没有办法将图像加载到不会占用大量内存并且仍然可以删除图像的 BitmapImage 中?

非常感谢!^_^