NCindy

.net平台上的高性能网络程序开发框架

美化VS2010在远程桌面/无法启动硬件加速渲染的机器下的字体显示

VS2010全面采用了WPF技术构建,编辑器可以充分利用计算机的硬件图形加速功能,所以如果在编辑器中使用Clear Type字体,显示效果会非常漂亮。但是这个功能只局限于本地计算机,一旦使用远程桌面进行开发,原本漂亮平滑的字体就会变得毛糙。这是因为远程桌面为了性能原因禁止了Clear Type。今天偶尔调节了一下编辑器的缩放功能(左下角那个写着100%的下拉框),发现当放大比例高于一定程度(比如11号字体放大到150%的时候在我的屏幕上很漂亮)时即使没有Clear Type,字体就会又变平滑。但是每次打开一个文件就要调一遍缩放比例让我非常的不爽,我们是程序员,当然要自动化一切可以自动化的东西。Google了一番找到了解决办法,步骤如下:

  1. 安装VS2010 SDK
  2. 从GitHub下载DisableMouseWheelZoom项目的代码
  3. 打开这个工程,然后在代码(只有一个cs/一个class/一个方法,所以别说你找不到哈)中增加一行:textView.ZoomLevel = 150D; //代表放大到150%,如果你不需要禁用鼠标滚轮缩放的话,删掉另外一行。
  4. 编译,然后安装生成的VSIX
  5. 重启VS2010,再打开一个文件看看吧,是不是已经自动放大到150%了

另外如果机器的配置不够,启动硬件加速会导致VS2010比更卡,这时也可以用这个办法来调整。

 

Have fun!

 

后记:

本来以为一行代码就能搞定的,发现虽然放大了字体,但是旁边的outline却没有一起被放大,我猜测是初始化顺序的问题,在设置ZoomLevel时Outline控件还没有挂接TextView的事件,所以没有响应。用如下代码就能解决:

var op = AsyncOperationManager.CreateOperation(null);
op.PostOperationCompleted(o
=> {
     textView.ZoomLevel
= 150D;
 },
null);

 

其实道理也很简单,通过异步Post把修改ZoomLevel的方法放入消息队列等待,让TextView先执行TextViewCreated事件之后的方法,这样就可以正确的初始化outline,再设置ZoomLevel就可以让TextView与Outline一同缩放了。

posted on 2010-04-13 15:03  iceboundrock  阅读(1279)  评论(0编辑  收藏  举报

导航