1

有没有办法将 Format32bppArgb 转换为 32 位 argb 以及如何?

编辑:好的,我正在加载一个默认SlaarToolkit标记:

var marker = Marker.LoadFromResource("/Content/Marker_SLAR_16x16segments_80width.pat", 16, 16, 80);

当我运行应用程序时,我收到 InvalidOperationException 消息:

Only 32 Bit ARGB pixel format is supported, not Format32bppArgb
4

1 回答 1

2

这听起来像是该库、您尝试加载的内容文件或 Windows Phone CLR 本身有问题。

这是引发该异常的库中的代码:

/// <summary>
/// Invoked when a video device reports a  video format change.
/// </summary>
/// <param name="videoFormat">The new video format.</param>
protected override void OnFormatChange(VideoFormat videoFormat)
{
    if (videoFormat.PixelFormat != PixelFormatType.Format32bppArgb)
    {
        throw new InvalidOperationException(String.Format("Only 32 Bit ARGB pixel format is supported, not {0}.", videoFormat.PixelFormat));
    }

    detector.ChangeFormat(videoFormat.PixelWidth, videoFormat.PixelHeight);
    vidFormat = videoFormat;
}

这是一个非常简单的比较,让我相信 videoFormat 参数的 PixelFormat 属性实际上不是 PixelFormatType.Format32bppArgb。

如果没有更多细节和更大的代码示例,以及导致问题的文件,几乎不可能知道这里发生了什么。

我真的无法想象这是怎么发生的,因为 VideoFormat 和 PixelFormatType 都是 Windows Phone 的内置 CLR 类型。PixelFormatType 是一个简单的枚举,甚至没有位标记,因此重叠位字段不会成为问题。VideoFormat 的 PixelFormat 属性属于 PixelFormatType 类型,因此您不可能使用此值引发此异常。

我会向图书馆的开发人员和 Microsoft 报告这一点,因为这似乎是以一种无形的方式出现了非常大的问题。

当您尝试使用其他内容文件时会发生这种情况吗?

于 2012-06-23T19:01:18.520 回答