Visual Studio の Image Watch 拡張機能 ( http://goo.gl/TWre0X ) を使用すると、デバッグ中にメモリ内のビットマップを表示できます。非常に便利ですが、DIB、BITMAPINFOHEADER、または BITMAPINFO オブジェクトだけを表示できるように natvis ファイルを定義しようとして立ち往生しています。
これが私が現在持っているものです:
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1"
MenuName="Add to Image Watch"/>
<Type Name="BITMAPINFOHEADER">
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
</Type>
<Type Name="BITMAPINFOHEADER">
<Expand>
<Synthetic Name="[type]">
<DisplayString>UINT8</DisplayString>
</Synthetic>
<Synthetic Name="[channels]">
<DisplayString>RGB</DisplayString>
</Synthetic>
<Item Name="[width]">biWidth</Item>
<Item Name="[height]">biHeight</Item>
<Item Name="[data]">(BYTE *)$ + sizeof(BITMAPINFOHEADER) + biClrUsed * 4</Item>
<Item Name="[stride]">biBitCount*3</Item>
</Expand>
</Type>
</AutoVisualizer>
問題は明らかに「[data]」部分で、ピクセル データのオフセットを計算しようとしています。$ は、natvis ファイルが実際に何を行っているかを理解しようとする弱い試みです。
Image Watch のドキュメントとユーザー定義型のいくつかのサンプル natvis ファイル (BITMAPINFOHEADER がユーザー定義にどのように分類されるか、理由はわかりません): http://goo.gl/zt2uCh
Image Watch の BITMAPINFOHEADER タイプを処理および表示する natvis ファイルを既に持っている人はいますか? または、これを機能させる方法について提案があります。ありがとう。