Расширения Visual Studio VSIX добавляют растровое изображение в краткую информацию - PullRequest
0 голосов
/ 13 марта 2019

У меня есть клиент VSIX Extension , который может показать Quick Infos.Я реализовал IAsyncQuickInfoSourceProvider и IAsyncQuickInfoSource, следуя примеру Microsoft / VSSDK-Extensibility-Samples / Async QuickInfo .

Мне нужно показать динамически генерируемые растровые изображения (расположенные на локальном диске) в кратких советах.
В общем случае изображение можно добавить в краткую информацию с помощью Microsoft.VisualStudio.Text.Adornments.ImageElement из Microsoft.VisualStudio.Core.Imaging.ImageId.

Конечно, я знаю, как загрузить растровое изображение в целом:

var bitmap = new System.Windows.Media.Imaging.BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(imagePath, UriKind.RelativeOrAbsolute);
bitmap.EndInit();

Я далек от того, чтобы быть экспертом в этой теме.
У меня вопрос, как мне получить Microsoft.VisualStudio.Core.Imaging.ImageId из файла?

Мой код основан на VSSDK-Extensibility-Samples / AsyncQuickInfo / src / LineAsyncQuickInfoSource.cs :

public System.Threading.Tasks.Task<QuickInfoItem> GetQuickInfoItemAsync(
    IAsyncQuickInfoSession session, System.Threading.CancellationToken cancellationToken) {

    SnapshotSpan span;
    string imagePath = "myPathAndFilename";


    var icon = ??? imagePath ???

    var imageItem = new Microsoft.VisualStudio.Text.Adornments.ImageElement(icon);


    var dataElem = new Microsoft.VisualStudio.Text.Adornments.ContainerElement(
        Microsoft.VisualStudio.Text.Adornments.ContainerElementStyle.Stacked,
        imageItem);
    var applicableToSpan = currentSnapshot.CreateTrackingSpan(span, SpanTrackingMode.EdgeInclusive);
    return System.Threading.Tasks.Task.FromResult(new QuickInfoItem(applicableToSpan, dataElem));
}
...