2009年12月29日 星期二

Multi-touch? Gesture? how about this???

會不會每天接觸電腦,透過開發工具撰寫程式的我們,反而讓電腦世界制約(抑制扼殺)了我們的想像力? 或許,這一切真的有不同的可能性?

2009年12月26日 星期六

Silverlight 4 中的RichTextArea 支援

Silverlight 4 beta當中出現了一堆社群中期待很久的好功能,針對這個部分,我忘記是SL的產品經理還是開發Team的誰,對於被訪問到SL4的新功能時,還『謙虛』的說:這沒什麼,我們只是把社群提供的Wishlist中的Top 10(還是多少我忘了),實作出來而已。

這一實作,就增加了WebCam, HTML Browser的支援, Printing, RichTextArea...等功能。一個個都直接命中開發人員期待(還是抱怨 ^_^)已久的需求。

先前介紹過了WebCam與列印,今天要介紹的是RichTextArea,這也是社群強烈要求的功能之一,看來這次是沒有落空了。

RichTextArea和過去我們熟悉的RichTextBox一樣,可以控制文字的B, U, I, 當然也可以改變文字大小、字型、顏色...承襲SL的一貫風格, RichTextArea當然也支援插入圖形和HyperLink,甚至任何的物件(例如Rectangle...),這讓SL可以輕易寫出Windows Form或Web Form沒法做出的編輯器。

控制的方法很簡單,程式碼如下:
private void button_B_Click(object sender, RoutedEventArgs e)
{
richTextArea1.Selection.SetPropertyValue(TextElement.FontWeightProperty, FontWeights.ExtraBold); //設定粗體
richTextArea1.Focus();
}

private void button_U_Click(object sender, RoutedEventArgs e)
{
richTextArea1.Selection.SetPropertyValue(TextElement.TextDecorationsProperty, TextDecorations.Underline); //設定底線
richTextArea1.Focus();
}

private void button_I_Click(object sender, RoutedEventArgs e)
{
richTextArea1.Selection.SetPropertyValue(TextElement.FontStyleProperty, FontStyles.Italic); //設定斜體
richTextArea1.Focus();
}

private void ComboBox_FontSize_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
richTextArea1.Selection.SetPropertyValue(TextElement.FontSizeProperty, ((ComboBoxItem)ComboBox_FontSize.SelectedItem).Content.ToString()); //設定文字大小
richTextArea1.Focus();
}

private void ComboBox_Color_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
richTextArea1.Selection.SetPropertyValue(TextElement.ForegroundProperty, ((Rectangle)ComboBox_Color.SelectedItem).Fill); //設定顏色
richTextArea1.Focus();
}

private void button_OK_Click(object sender, RoutedEventArgs e)
{
XamlDORichTextSerializer serializerXaml = new XamlDORichTextSerializer();
this.textBlock1.Text = serializerXaml.SerializeObject(richTextArea1).ToString(System.Xml.Linq.SaveOptions.OmitDuplicateNamespaces); //取得Xaml Code
}
[完整程式碼瀏覽]
您可以點選底下的HyperLink來測試這個程式的結果:
[範例] (還是一樣,要測試這個範例前,請先安裝SL4 Development Run-Time)

2009年12月18日 星期五

Silverlight Multi-Touch研討會

感謝許多朋友們參加了昨天12/17的MSDN研討會, 在這個場次中我大致上介紹了Silverlight開發Multi-Touch Application的概念與一些技巧,研討會中的投影片和要提供給各位的Component我會在整理完成後放到blog上,預計周末前可完成。

很感謝大家天氣那麼冷還到場參加,會中看到了很多先前的老朋友以及之前沒見過面的朋友們,很謝謝各位的支持。

BTW, 先前在Blog上沒有提醒大家是因為報名已經滿了,我也收到許多中南部的朋友們的建議,我會跟微軟反映,盡可能爭取到能夠到中南部舉辦的機會。謝謝大家的支持。

2009年12月4日 星期五

雲端運算說明影片

最近在幾個演講的場合談到雲端運算,因此也隨手上網找了一些影片或介紹,發現底下這個影片很簡潔扼要的清楚的說明了雲端運算,因此分享給大家:

他從一般End-User的角度來介紹何謂雲端運算,以及對於使用者(或企業用戶來說有哪些好處)說明的清楚易懂,算是不錯的影片。

英文版

2009年12月1日 星期二

Silverlight 4 中的WebCam支援

在剛推出的Silverlight 4 beta版中,終於支援了大家期待已久的WebCam功能,底下是測試頁面:
[測試]
但請注意,測試前需先安裝SL4 Developer runtimes: Windows然後才能執行,Webcam是建立網路服務應用程時相當需要的功能。

整個程式的設計方式並不複雜,主要的程式碼片段如下:
        private void Button1_Click(object sender, RoutedEventArgs e)
{
//判斷目前啟動狀態
if (!CaptureDeviceConfiguration.AllowedDeviceAccess)
{
//透過RequestDeviceAccess要求使用者允許使用WebCam(這時畫面上會跳出Yes/No詢問視窗)
if (!CaptureDeviceConfiguration.RequestDeviceAccess())
{
MessageBox.Show("can't access device.");
return;
}
}

//建立CaptureSource
CaptureSource CaptureSource = new CaptureSource();
//建立VideoBrush
VideoBrush vb = new VideoBrush();
Grid1.Background = vb;
//將VideoBrush的Source設為CaptureSource
vb.SetSource(CaptureSource);
//start web cam
CaptureSource.Start();
Button1.Visibility = System.Windows.Visibility.Collapsed;
}

你會發現我們可以透過CaptureSource這個物件來抓取WebCam資料(其實除了WebCam還可以抓取聲音),然後把CaptureSource設為VideoBrush,並將CaptureSource設為Grid的Bbackground即可。