【译】使 Visual Studio 更加可视化
任何 Web、桌面或移动开发人员都经常使用图像。你可以从 C#、HTML、XAML、CSS、C++、VB、TypeScript 甚至代码注释中引用它们。有些图像是本地的,有些存在于线上或网络共享中,而其他图像可能仅以 base64 编码字符串的形式存在。我们在代码中以多种方式引用它们,但总是作为字符串值,不能显示图像的样子。直到现在。
当光标悬停时,预览图像的功能请求最近得到了很多关注,所以我们决定研究一下。不同的编辑器已经存在各种各样的图像预览器,但它们的工作方式都略有不同。如果我们要构建它,我们必须以一种对 Visual Studio 来说原生和自然的方式来做。因此,我们发起了一个社区实验来解决这个问题。
结果是代码编辑器中的编辑器 tooltip。该 tooltip 以原始大小显示图像,但宽度和高度上限为500像素。在预览图的下面,你会看到像素大小和字节大小。
实验参与者对这一功能非常兴奋。以下是他们中的一些人的留言:
我们确定了一些需要回答的重要问题:
- 必须支持哪些图像文件类型?
- 哪些图像引用语法和格式最常用?
- 哪些附加功能可能很重要?
这个实验帮助我们回答了这些问题。我们来复习一下。
支持的文件类型
实验参与者最常用的图像文件有(按顺序排列):
- PNG – 53%
- JPG – 21%
- SVG – 15%
- ICO – 4%
- WebP – 4%
- GIF – 2%
- 其他文件类型,如 BMP, TIFF, DDS
WPF 唯一不直接支持的格式是 SVG,因此我们必须将其转换为 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/
【译】使 Visual Studio 更加可视化的更多相关文章
- 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- 【译】Visual Studio 15 预览版更新说明
序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...
- 【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- 【译】Visual Studio 2019 的 Local Process with Kubernetes
今天,我们自豪地宣布 Local Process with Kubernetes 的预览版已加入到 Visual Studio 2019 16.7 Preview 2 中. Local Proces ...
- 【译】Visual Studio 的 Razor 编辑器的改进
自从我们在一个通用的 Razor 语言服务器上发布了 Visual Studio 的一个新的实验性 Razor 编辑器的第一个预览版以来,已经过去了6个月,现在是时候更新一下我们的进展了.团队一直在努 ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- 终于等到你,最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- 在Visual Studio上开发Node.js程序
[题外话] 最近准备用Node.js做些东西,于是找找看能否有Visual Studio上的插件以方便开发.结果还真找到了一个,来自微软的Node.js Tools for Visual Studio ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...
- .NET Core 在Visual Studio 2015 下的使用-MSDN
.NET Core RC2 现已推出,这是真正的"候选发布"而非 RC1 Beta 冒充的候选发布(如果是那样,请考虑发布后出现的所有更改).当前,围绕 .NET Core 的开发 ...
随机推荐
- 平衡树 Treap & Splay [学习笔记]
平衡树 \(\tt{Treap}\) & \(\tt{Splay}\) 壹.单旋 \(\tt{Treap}\) 首先了解 \(\tt{BST}\) 非常好用的东西,但是数据可以把它卡成一条链 ...
- 【winform】【Socket】实现你画我猜一:核心功能开发
我认为得核心:是把客户端画的图画实时传递给其他的客户端. 我的思路是: 1.GDI+绘图加鼠标事件,实现客户端绘图. 2.每记录鼠标有效绘图10个点,就把这10个点通过socket传递给服务器. ...
- 数据结构(C++)--学习单链表时发现的一些小坑
基于类的链表类无相应构造函数报错 #include<bits/stdc++.h> using namespace std; const int MaxSize = 10; template ...
- 记录一次由nginx配置引发出来的一系列的缓存问题
问题描述: 在做一个企业微信的移动端项目时,每次修改代码后并且打包.部署完毕,再次打开页面总是会有上一次的缓存,一开始以为是cookie和webStorage缓存导致的,然后每次清除还是有缓存,后来把 ...
- 1.Prism
Region(区域)在程序编写的过程中我们肯定会遇到在一个区域上显示不同的内容,这些内容可能属于不同窗口,之前是弄个panel,需要显示哪个窗口就给让panel显示. 1.定义区域2.提供对区域的访问 ...
- Docker Build Cache 缓存清理
Docker 18.09 引入了 BuildKit ,提升了构建过程的性能.安全.存储管理等能力. docker system df 命令,类似于 Linux上的 df 命令,用于查看 Docker ...
- .Net Core 静态类获取注入服务
由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取) 获取服务,我们可以采取通过IApplicationBuilder 获取 1.首先创建一个静态类 using Microsoft ...
- UIScrollView 在Autolayout下使用的一些问题
一.UIScrollView 双指放大手势,双击放大实现 在设置UIScrollView的frame后.maxZoomScale 和 minZoomScale之后,UIScrollView会自然支持双 ...
- k8s——核心概念篇
服务的分类 有状态 代表应用 nginx apache 优点 对客户端透明,无依赖关系,可以高效实现扩容,迁移 缺点 不能存储数据,需要额外的数据服务支撑 无状态 代表应用 MYSQL Redis 优 ...
- umount 报错umount: /new_room: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
挂载逻辑卷后,尝试更新逻辑卷的文件系统 [root@server lost+found]# umount /new_room/ umount: /new_room: target is busy. ( ...