WP8 富文字功能實現

2022-03-10 14:38:33 字數 3304 閱讀 4161

walsh 提供的問題文字,

表情,超連結wp上沒有提供對富文字的直接編輯,富文字是通過字串進行轉換的,例如:qq上的表情用斜槓標識(例如:/哈哈),微博上的表情用中括號標識(例如:[兔子])

在msdn看到richtextbox支援乙個xaml的屬性,可以直接構造xaml字串,賦給richtextbox,但是xaml屬性不支援元素,所以如果不需要顯示的話可以使用該屬性

詳情見:

由於需要用到元素,所以我們通過構造xaml然後用xamlreader把xaml轉換為paragraph,再把paragraph賦值給richtextbox.blocks,從而實現富文字

先看效果圖吧

我們對richtextbox進行擴充套件,新增乙個新屬性text

定義richtextbox之前,我們先說明表情字典的載入,我把表情字典儲存在乙個txt檔案中,在載入的時候進行讀取

表情字典在檔案中的定義如下

sina/s001.png,[兔子]

sina/s002.png,[熊貓]

sina/s003.png,[給力]

sina/s004.png,[神馬]

sina/s005.png,[浮雲]

sina/s006.png,[織]

sina/s007.png,[

圍觀]

然後在需要的時候從檔案中讀取(放在richtextboxext)

using

system;

using

system.collections.generic;

using

system.io;

using

system.linq;

using

system.text;

using

system.text.regularexpressions;

using

system.windows;

using

system.windows.controls;

using

system.windows.documents;

using

system.windows.markup;

namespace

richtextdemo

public

string

text

set }

#endregion

//1、由於richtextbox的xaml屬性不支援,所以沒辦法直接通過richtextbox的xaml屬性直接處理

//這裡通過構造xaml並使用xamlreader進行讀取轉換達到富文字的目的

//

/////

///

/// public paragraph converttoelement(string

input)

//匹配普通鏈結(遇到空格或非ascii字元則停止)

//記錄是否重複

var matchs = new list();

foreach (match m in

mc)

//這裡鏈結用藍色顯示,不加下劃線(注意,這裡使用系統的瀏覽器ie開啟)

input = input.replace(m.value.substring(0

, m.value.length),

string.format(@"",

m.value));

matchs.add(m.value);

}matchs.clear();

//匹配安全連線

}//表情字典

var dict =emotiondictionary;

//構造正則模式串(匹配表情)

var builder = new

stringbuilder();

foreach (var key in

dict.keys)

", @"\}"

));"|"

); }

//定義乙個regex物件例項

var r = new regex(builder.tostring().substring(0, builder.length - 1

)); mc =r.matches(input);

foreach (match m in

mc)

var xaml = string.format(@"

", input);

return

(paragraph)xamlreader.load(xaml);

}#region 表情字典

private

static dictionaryemotiondictionary;

public

static dictionaryemotiondictionary

;foreach (var file in

files)

.txt

", file), urikind.relative)).stream)}}

}}return

emotiondictionary;}}

#endregion

}}

下面是使用,使用很簡單

<

richtextdemo:richtextboxext

text

margin

="-10,0"

/>

附上demo

WP8 換膚功能的實現

1 修改顏色畫刷 在修改原有的畫刷 phoneaccentbrush,phoneforegroundbrush,phonebackgroundbrush等等 這裡是系統預設的畫刷 例如 把主題色改為紅色 把主題色改為紅色 由於solidcolorbrush的color是依賴屬性,所以該修改可以通知到...

建立WP8試用應用

windows phone 7 開發 31 日談 第23日 提供試用版應用程式 對資料總結下 如何檢查應用中的試用許可證 using microsoft.phone.marketplace private static licenseinformation licenseinfo new licen...

WP8下實現刮刮樂 橡皮擦 功能

說到刮刮樂這個功能,我們最先想到的是上下兩張 長方形 重疊,之後對上面這張進行操作。我的想法是 通過手勢,讓手指劃過的地方變成透明的,底部就會顯示了。那如何讓變為透明呢?這就要對的畫素進行處理了。對於每乙個元素,官方文件說都是argb32 預乘rgb24 a指的是alpha通道 控制透明度的 256...