新聞中心
前些日子心血來(lái)潮去Visual Studio擴(kuò)展庫(kù)上淘了一圈,發(fā)現(xiàn)了這樣一個(gè)擴(kuò)展:http://visualstudiogallery.msdn.microsoft.com/zh-cn/0e6f9037-b753-469e-86d4-bfba78c74cf6

創(chuàng)新互聯(lián)建站專(zhuān)注于烏拉特后企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開(kāi)發(fā),商城網(wǎng)站制作。烏拉特后網(wǎng)站建設(shè)公司,為烏拉特后等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
但是這個(gè)擴(kuò)展用起來(lái)還有一些不方便的地方,例如會(huì)鎖定背景圖片文件、縮放編輯器的時(shí)候背景圖片會(huì)因?yàn)闈L動(dòng)條的定位而飄到上方、透明度和背景圖像的位置不能改變等等。
而這個(gè)擴(kuò)展***一次更新是5月5日,到現(xiàn)在已經(jīng)過(guò)了五個(gè)月了。所以我決定仿照它的原理自己寫(xiě)一個(gè)。
使用起來(lái)效果大概是這樣:
其實(shí)這個(gè)東西也是比較容易做的,只要安裝了Visual Studio 2010 SDK就可以創(chuàng)建Editor Viewport Adornment項(xiàng)目,在新建的項(xiàng)目的基礎(chǔ)上很容易搭建出像這樣的擴(kuò)展。
這個(gè)擴(kuò)展要通過(guò)一個(gè)XML文件來(lái)進(jìn)行設(shè)置,這個(gè)XML文件會(huì)在安裝擴(kuò)展以后***次啟動(dòng)Visual Studio 2010的時(shí)候自動(dòng)建立在“我的文檔”中,文件名為“ItaBackgroundKyuu.config”。
其中使用的參數(shù)都是WPF和BCL中的常見(jiàn)數(shù)據(jù)類(lèi)型:
- public AlignmentX AlignXpublic AlignmentY AlignYpublic Stretch StretchModepublic TileMode TileMode
- public StretchDirection ScaleDir;public Stretch ScaleMode;public HorizontalAlignment HAlign;public VerticalAlignment VAlign;
在我的機(jī)器上(也就是上面的效果圖的來(lái)源)是這樣設(shè)置的:
D:\Files\Yuki\Pictures\haoren65.png Center Center Fill Tile D:\Files\Yuki\Documents\aizawa-hikaru.png Both Uniform Right Bottom
在我的實(shí)現(xiàn)中使用了兩種方式來(lái)繪制背景:一種為了兼容之前日本人寫(xiě)的ItaBackgroundImage而使用Image控件;另一種則使用了ImageBrush,可以選擇使用圖素(Tile)與否。
這里需要說(shuō)明一下,由于我對(duì)圖片的單位換算還不熟,所以如果在啟用了圖素模式的條件下選用了和屏幕的DPI不同的圖片(例如我用的haoren65.png——這是我?guī)啄昵盀槟硞€(gè)娛樂(lè)用途制作的背景圖像),就有可能會(huì)出現(xiàn)圖像被縮小或拉伸之類(lèi)的現(xiàn)象。
由于我也是剛開(kāi)始接觸Visual Studio 2010擴(kuò)展開(kāi)發(fā),所以對(duì)于對(duì)話(huà)框之類(lèi)的東西暫時(shí)也是沒(méi)辦法。配置文件也是使用的XML序列化而非正統(tǒng)的ConfigurationSection+ConfigurationManager模式(在下一個(gè)版本中我會(huì)把它改好的——如果還有下一個(gè)版本的話(huà))。
這里提一下:
- var xs = new XmlSerializer(typeof(ItaConfig2), new XmlRootAttribute("ItaBackgroundConfig2"));
- // 這里使用XmlRootAttribute可以改變序列化時(shí)根節(jié)點(diǎn)的名稱(chēng)
- var voidNamespaceMapping = new XmlSerializerNamespaces();
- voidNamespaceMapping.Add("", "");xs.Serialize(sw, config, voidNamespaceMapping);
- //在這里使用一個(gè)“幾乎”為空的XmlSerializerNamespaces可以清除掉序列化時(shí)產(chǎn)生的不必要的namespace。
好了,說(shuō)了這么多,想下載這個(gè)擴(kuò)展玩一玩的話(huà)可以點(diǎn)擊這個(gè)鏈接。
特別強(qiáng)調(diào)一下:這不是一個(gè)完全的、穩(wěn)定的產(chǎn)物,可能存在這樣那樣的缺陷。
網(wǎng)頁(yè)名稱(chēng):詳解VisualStudio2010增加背景圖片的擴(kuò)展
分享網(wǎng)址:http://m.fisionsoft.com.cn/article/coopjdc.html


咨詢(xún)
建站咨詢(xún)
