将 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
相同的功能 - 所有图像仅使用一个文件。
我想在 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
相同的功能 - 所有图像仅使用一个文件。