【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

WriteableBitmapをBMPで保存

WriteableBitmapのイメージは簡単にBMPファイルとして保存できます。

var bmp = new WriteableBitmap(LayoutRoot, null);
var sfd = new SaveFileDialog
{
    Filter = "32 ビット ビットマップ (*.bmp)|*.bmp|すべてのファイル (*.*)|*.*",
    DefaultExt = ".bmp"
};
if (sfd.ShowDialog() == true)
{
    using (var bw = new BinaryWriter(sfd.OpenFile()))
    {
        bw.Write((byte)'B'); bw.Write((byte)'M');
        bw.Write(54 + bmp.Pixels.Length * 4); bw.Write(0); bw.Write(54);
        bw.Write(40); bw.Write(bmp.PixelWidth); bw.Write(-bmp.PixelHeight);
        bw.Write((short)1); bw.Write((short)32); bw.Write(new byte[24]);
        foreach (var px in bmp.Pixels) bw.Write(px);
    }
}