将 ImageMoniker 转换为 Visual Studio 扩展名的位图

Convert an ImageMoniker to a Bitmap for a Visual Studio extension

我想在 Visual Studio 状态栏中显示状态动画。对于动画我需要一个位图。为了防止出现重复文件,我想从我在 VSCT 文件中链接的给定 ImageMoniker 获取该位图。

我当前的代码如下所示:

private void ShowIconInStatusBar(object sender, RatingChangedEventArgs eventArgs)
{
    IntPtr hdc = new Bitmap(@"Resources\red.bmp").GetHbitmap();
    object icon = hdc;

    this.statusBar.Animation(1, ref icon);
}

理想情况下,我会使用 ImageMoniker。我想象这样的事情:

Bitmap b = Bitmap.FromImageMoniker(this.moniker);

但我找不到任何方法将 ImageMoniker 转换为图像或位图。我该怎么做?甚至可以做到吗?

直接这样做似乎行不通,但我找到了一个不需要重复文件的不同解决方案。

var bitmap = new Bitmap(path).Clone(
    new Rectangle(
        new Point(xCoordinate, 0),
        new Size(16, 16)),
    System.Drawing.Imaging.PixelFormat.DontCare);
IntPtr hdc = bitmap.GetHbitmap();

通过使用 Clone,我可以实现与 ImageMoniker 相同的功能 - 所有图像仅使用一个文件。