无论是网页、桌面还是移动开发者,都经常与图像打交道。你会在C#、HTML、XAML、CSS、C++、VB、TypeScript,甚至代码注释中引用它们。有些图像是本地的,有些存在于网络或网络共享中,还有些仅以base64编码的字符串形式存在。我们在代码中以多种方式引用它们,但始终是以不展示图像外观的字符串值形式。但这一切,现在有了改变。
图像悬停预览:英雄登场
最近,“图像悬停预览”这一功能请求备受关注,因此我们决定深入研究。虽然不同编辑器已有各种图像预览器,但它们的工作方式各不相同。如果我们要开发这一功能,必须确保它与Visual Studio融为一体,自然流畅。为此,我们发起了一项社区实验来探索解决方案。
实验成果是一款在代码编辑器中显示的编辑器工具提示。该工具提示以原始大小显示图像,但宽度和高度均不超过500像素。在预览图像下方,你会看到图像的像素尺寸和文件大小(以字节为单位)。
实验参与者反响热烈
实验参与者对这一功能表现出了极大的热情。以下是部分参与者的反馈:
关键问题待解
在推进过程中,我们识别出几个需要解答的重要问题:
必须支持哪些图像文件格式?
哪些图像引用语法和格式最为常用?
哪些附加功能可能至关重要?
实验帮助我们找到了这些问题的答案。接下来,让我们逐一探讨。
支持的文件类型
实验参与者最常使用的图像文件类型(按顺序排列)包括:
PNG – 53%
JPG – 21%
SVG – 15%
ICO – 4%
WebP – 4%
GIF – 2%
其他文件类型如BMP、TIFF、DDS等
值得注意的是,SVG是唯一一个WPF不直接支持的格式,因此我们需要将其转换为WPF能够渲染的位图格式。这也是为什么SVG支持尚未纳入此功能的原因。不过,我们仍在努力寻找最佳解决方案,以便在未来版本中提供更全面的支持。
引用语法
引用图像的方式多种多样,主要取决于所使用的语言和应用程序模型。从实验中我们观察到的最常见的方式包括:
相对URL(./, ../, 和 /)
文件路径(c:, c:/, , 和 /)
数据URI(data:image/png;base64,…)
包URI(pack://application:,,,/Images/MyImage.png)
图像图标(KnownMonikers.StatusWarning)
附加功能
除了简单地显示图像预览外,社区还提出了两个附加功能。
预览缩放:这是一个很酷的功能,值得我们在未来的更新中进一步探索。然而,目前它不在我们的计划范围内。
点击预览图像打开:这个想法是用户应该能够点击预览图像,以便在其默认图像查看器应用程序中打开它。这个功能很容易添加,所以我们已经实现了它。
这就是图像悬停预览功能如何融入Visual Studio的故事。要亲自尝试此功能,请安装最新版本的Visual Studio 2022(v17.10或更高版本)并试用它。
文章链接:
https://devblogs.microsoft.com/visualstudio/making-visual-studio-a-bit-more-visual/