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 に答える