Visual Studio 的 Image Watch 扩展 ( http://goo.gl/TWre0X ) 允许您在调试时查看内存中的位图。非常有用,但是我一直试图定义一个 natvis 文件以允许查看 DIB 或 BITMAPINFOHEADER 甚至只是 BITMAPINFO 对象。
这是我目前拥有的:
<?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>
问题显然是“[数据]”部分,试图计算像素数据的偏移量。$ 是试图理解 natvis 文件真正在做什么的弱尝试。
Image Watch 的文档和用户定义类型的一些示例 natvis 文件(BITMAPINFOHEADER 如何属于用户定义,不知道为什么):http: //goo.gl/zt2uCh
是否有人已经有一个 natvis 文件来处理和显示 Image Watch 的 BITMAPINFOHEADER 类型?或者有一个关于如何让这个工作的建议。谢谢。