VS2013 图片背景·全透明背景图(转)

1.准备工作
http://download.microsoft.com/download/9/1/0/910EE61D-A231-4DAB-BD56-DCE7092687D5/vssdk_full.exe
http://pan.baidu.com/s/1kTFt3gz
2.新建Package项目
代码如下:
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace Microsoft.SoheeBackground//命名空间自己修改回自己用的
{
[PackageRegistration(UseManagedResourcesOnly = true)]
[InstalledProductRegistration("#110", "#112","1.0", IconResourceID = )]
//此处删除了一条代码段,原因不明,对后续影响不明
[ProvideAutoLoad(UIContextGuids.NoSolution)]
[ProvideAutoLoad(UIContextGuids.SolutionExists)]
public sealed class IDEBackgroundPackage : Package
{
protected override void Initialize()
{
base.Initialize();
Application.Current.MainWindow.Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
var rWindow = (Window)sender;
//加载图片 E:\FileDownload\Explorer\be30870a304e251ff3c5926fa786c9177f3e537f.jpg
var rImageSource = BitmapFrame.Create(new Uri(@"E:\FileDownload\Explorer\241f95cad1c8a786d814d6eb6709c93d70cf501c.jpg"/*图片路径*/), BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
rImageSource.Freeze();
var rImageControl = new Image()
{
Source = rImageSource,
Stretch =Stretch.UniformToFill, //按比例填充
HorizontalAlignment =HorizontalAlignment.Center, //水平方向中心对齐
VerticalAlignment =VerticalAlignment.Center, //垂直方向中心对齐
};
Grid.SetRowSpan(rImageControl, );
var rRootGrid =(Grid)rWindow.Template.FindName("RootGrid", rWindow);
rRootGrid.Children.Insert(, rImageControl);
}
}
}
5.代码修改后,调试,这时就会编译扩展,然后启动实验用VS。(如果这是第一次启动实验用VS,可能要像刚安装完VS那样设置一下)接着你会看到角落处显现出那张背景图
3.修改皮肤配色
https://visualstudiogallery.msdn.microsoft.com/9e08e5d3-6eb4-4e73-a045-6ea2a5cbdabe

4.重启,重启后,进入“工具->CustomizeColors”。在“Customize Colors”那里点“Import Theme”即可(文件在一开始百度云下载的打包文件中)
4.编辑器透明化
using Microsoft.VisualStudio.Text.Classification; using Microsoft.VisualStudio.Text.Editor; using Microsoft.VisualStudio.Utilities; using System; using System.ComponentModel.Composition; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Threading; namespace Microsoft.SoheeBackground
{ [Export(typeof(IWpfTextViewCreationListener))] [ContentType("Text")] [ContentType("BuildOutput")] [TextViewRole(PredefinedTextViewRoles.Document)] class Listener :IWpfTextViewCreationListener { [Import] IEditorFormatMapService EditorFormatMapService = null; public void TextViewCreated(IWpfTextView rpTextView) { new EditorBackground(rpTextView); //去掉断点边栏的背景 var rProperties = EditorFormatMapService.GetEditorFormatMap(rpTextView).GetProperties("IndicatorMargin"); rProperties["BackgroundColor"] = Colors.Transparent; rProperties["Background"]= Brushes.Transparent; } } class EditorBackground { IWpfTextView r_TextView; ContentControl r_Control; Grid r_ParentGrid; Canvas r_ViewStack; public EditorBackground(IWpfTextView rpTextView) { r_TextView = rpTextView; r_Control =(ContentControl)r_TextView; r_TextView.Background =Brushes.Transparent; r_TextView.BackgroundBrushChanged+= TextView_BackgroundBrushChanged; r_TextView.Closed +=TextView_Closed; r_Control.Loaded += TextView_Loaded; } void MakeBackgroundTransparent() { r_TextView.Background =Brushes.Transparent; r_ViewStack.Background =Brushes.Transparent; r_ParentGrid.ClearValue(Grid.BackgroundProperty); } void TextView_Loaded(object sender,RoutedEventArgs e) { if (r_ParentGrid == null) r_ParentGrid =(Grid)r_Control.Parent; if (r_ViewStack == null) r_ViewStack = (Canvas)r_Control.Content; MakeBackgroundTransparent(); } void TextView_BackgroundBrushChanged(object sender, BackgroundBrushChangedEventArgs e) { r_Control.Dispatcher.BeginInvoke(new Action(() => { while (r_ParentGrid.Background != null) MakeBackgroundTransparent(); }), DispatcherPriority.Render); } void TextView_Closed(object sender,EventArgs e) { //清除委托,以防内存泄露 r_TextView.Closed -=TextView_Closed; r_TextView.BackgroundBrushChanged-= TextView_BackgroundBrushChanged; } } }
PS:参考
1.http://startalkers.lofter.com/post/1cb119b5_5be5e5a
2.http://doc.okbase.net/u012915516/archive/124296.html
VS2013 图片背景·全透明背景图(转)的更多相关文章
- vscode 全透明背景图
一.前言 08.02更新:已魔改插件 可以直接下载插件使用了 10.18跟新:已发布到vscode扩展 下载地址 下载后手动安装就ok了,具体配置安装后点开插件有说明的!!! 今天看到了博客园 这篇 ...
- painter半透明的 底层窗口全透明背景
- css实现背景全透明样式
background-color:transparent; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFF ...
- IE6下png背景不透明——张鑫旭博客读书笔记
从今天开始跟着大牛张鑫旭的步伐,每天进步一点点 问题:IE6不支持png背景透明或半透明 一.可解决的方法 补充:css滤镜主要是用来实现图像的各种特殊效果.(了解) css滤镜的标识符是“filte ...
- Android开发中的全屏背景显示方案
引子 不管是Android还是iOS平台中,都可以看到一些应用在启动的时候会先出现一个启动画面(Splash Activity),如QQ.微信等.这个启动画面中往往会将ActionBar和Status ...
- Android有趣的全透明效果--Activity及Dialog的全透明(附android系统自带图标大全)[转]
原文地址:http://blog.csdn.net/sodino/article/details/5822147 1.Activity全透明 同学zzm给了这个有趣的代码,现在公布出来. 先在res/ ...
- css3全屏背景图片切换特效
效果体验:http://hovertree.com/texiao/css3/10/ 一般做图片切换效果,都会使用JS或者jQuery脚本,今天发现,其实只用CSS也可以实现.试试效果吧. 效果图: 代 ...
- CSS之全屏背景图
吐槽啦:Yeah 明天就是国庆了o(* ̄▽ ̄*)o!哈哈,提前祝福各位园友国庆快乐.假期愉快.生活美满.天天开心!国庆我要回家一趟,把一些不用的东西带回家,走访一下亲朋好友,在家打几天酱油~~~ 言 ...
- Visual Studio 2017 设置透明背景图
一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...
随机推荐
- 一个巨low的“2048”
代码就是这样,做的不是4*4而是一个2*2 #include<stdio.h>#include<stdlib.h>#include<time.h>int main( ...
- MIT-线性代数笔记(1-6)
学习目录 第 01 讲 行图像和列图像 第 02 讲 矩阵消元 第 03 讲 矩阵的乘法和逆矩阵 第 04 讲 矩阵的LU 分解 第 05 讲 转置.置换和空间 第 06 讲 列空间和零空间 第 07 ...
- shared_lock and unique_lock
简单的说: shared_lock是read lock.被锁后仍允许其他线程执行同样被shared_lock的代码.这是一般做读操作时的需要. unique_lock是write lock.被锁后不允 ...
- Hive metastore源码阅读(一)
不要问我为什么,因为爱,哈哈哈哈...进入正题,最近做项目顺带学习了下hive metastore的源码,进行下知识总结. hive metastore的整体架构如图: 一.组成结构: 如图我们可以看 ...
- hdfs文件按修改时间下载
应用于:对于不同用户创建的表目录,进行文件的下载,程序中执行hadoop cat命令 下载文件到本地,随后通过ftp传至目标服务器,并将hdfs文件目录的修改时间存入mysql中.每次修改前将mysq ...
- 在CentOS上部署多节点Citus集群
1 在所有节点执行以下步骤 Step 01 添加Citus Repostory # Add Citus repository for package manager curl https://inst ...
- git取消文件跟踪
在使用git的时候,有些文件是不需要上传的,所以就可以修改 .gitignore 例如: 如果是对所有文件都取消跟踪的话,就是 git rm -r -cached . //不删除本地文件 git ...
- yum安装man命令程序错误
第一次安装CentOS后,man命令无法使用,查了一下,发现没有安装man命令程序.尝试安装man yum install man 结果如下: Loaded plugins: fastestmirro ...
- Java并发系列[6]----Semaphore源码分析
Semaphore(信号量)是JUC包中比较常用到的一个类,它是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制.Semapho ...
- C# 使用AngleSharp 爬虫图片
AngleSharp 简介 AngleSharp是基于.NET(C#)开发的专门解析HTML源码的DLL组件.根据HTML的DOM结构操作HTML,整个DOM已传输到逻辑类结构中.这种结构可以更好的操 ...