У меня есть клиент 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));
}