Конвертировать System.Drawing.Bitmap в stdole.StdPicture - PullRequest
5 голосов
/ 24 мая 2011

У меня есть System.Drawing.Bitmap, и мне нужно преобразовать его в stdole.StdPicture.
В настоящее время я использую:

var pic = (stdole.StdPicture)Microsoft.VisualBasic.Compatibility.VB6.Support.ImageToIPicture
                   (MyDLL.Properties.Resources.Img); // this is a System.Drawing.Bitmap

но я получаю предупреждение компилятора:

Предупреждение «Microsoft.VisualBasic.Compatibility.VB6.Support.ImageToIPicture (System.Drawing.Image)» устарел: «Microsoft.VisualBasic.Compatibility. * Классы устарели и поддерживаются только в 32-битных процессах. http://go.microsoft.com/fwlink/?linkid=160862

Так что же использовать вместо этого? Я не мог найти другое решение ...

Ответы [ 2 ]

6 голосов
/ 28 мая 2011

взято из NetOffice http://netoffice.codeplex.com Пример надстройки Office

public class IconConverter : System.Windows.Forms.AxHost
{
   private IconConverter(): base(string.Empty)
   {
   }

   public static stdole.IPictureDisp GetIPictureDispFromImage(System.Drawing.Image image)
   {

      return (stdole.IPictureDisp)GetIPictureDispFromPicture(image);
   }
} 
0 голосов
/ 24 мая 2011

Если вы выполните поиск в Google [конвертировать .net-изображение в ole-изображение], вы обнаружите много болтовни о том, как пойти другим путем (то есть, конвертировать ole-изображение в изображение), и много советовфактически говорит: «Не пытайтесь использовать оле картинки в .NET».Я согласен.Я пошел по этому пути несколько лет назад и решил, что мне действительно не нужна картинка OLE так сильно.

Я настоятельно рекомендую вам пересмотреть свою потребность в объектах изображения OLE.Если вы сохраняете изображения в базе данных, храните их как большие двоичные объекты, а не как объекты изображений.Если вам абсолютно необходимо использовать OLE-объекты изображения, тогда удачи.Это будет очень неприятно.

...