...

PDF 形式

by user

on
Category: Documents
35

views

Report

Comments

Transcript

PDF 形式
第15回 .NET勉強会/ヒーロー島
WPF 4 & Silverlight 4
Genius Seminar delivered for ヒーロー島
マイクロソフト株式会社
パートナービジネス営業統括本部
パートナーテクノロジー本部
プリンシパル テクノロジーアドバイザー
ジニアス平井(平井昌人)
[email protected]
Caution
本資料に掲載されている情報は、開発中
の製品および技術に関するものも含まれ
ております。これらは今後、変更される
可能性もあります。
当日のセミナーで使用する資料は、内容
の変更やスライドの追加を行っている場
合があります。最新のプレゼンテーショ
ン資料は次のサイトからダウンロードし
て下さい。
http://www.MasatoHirai.com/Partner/
Windows Presentation Foundation 4
Technical Workshop for Developer
Visual Studio 2010 – WPF/SL デザイナ
~ Expression Blend に近い操作性を提供 ~
 プロパティ編集機能を強化
 ブラシエディタ
 リソースに抽出
 リソースの適用
 データバインド
Visual Studio 2010 – WPF/SL デザイナ
~ データソースのドラッグ&ドロップはやはり便利! ~
 データバインディング
 データソース ウィンドウから
のドラッグ&ドロップを
サポート
 データテンプレートの
編集機能
 インテリセンスの強化
 {Binding …
 {StaticResource…
データソース ウィンドウ
から WPF デザイナに
ドラッグ&ドロップ
Visual Studio 2010 Beta2
~ 使用上の注意 ~
 コードエディタ上での IME の ON/OFF
 IME の ON/OFF は [半角全角]キーで行って下さい
 [ALT]+[半角全角]キーだと [ALT] キーでメニューにフォーカス移動
してしまいます。
 WPF / SL デザイナー
 デザイナー上に [デザイン]と[XAML]の両方のウィンドウを開い
ておいて下さい。
 どちらか一方にしておくと ビルド→実行 の後 VS2010 に戻った時に
フリーズしてしまいます。
 スペックのよいマシンで!
 まだ Beta 版なのでかなり重たいです。
 メモリは x86 で 3GB 以上、x64で 8GB 程度欲しいです
 CPU は Core2 Duo 以上がよいと思います
 WPF ベースなので GPU の影響もあります
 OS は Windows 7 が軽くていいです
DataGrid コントロール
~ VB6, Windows フォーム感覚での利用が可能 ~
 カラムの自動生成
<DataGrid ItemSource = "{Binding}" />
 AutoGenerateColumns = "True"
 既定カラムタイプ
 DataGridTextBoxColumn
 DataGridCheckBoxColumn
 DataGridComboBoxColumn
 DataGridHyperlinkColumn
 各種機能
 行ヘッダー&列ヘッダー
 列幅・行高のリサイズ
 列のオーダー変更
 ソート&フィルタ
 テンプレート
 CellTemplate
 CellEditingTemplate
列順
行高
列幅
編集
Calendar & DatePicker コントロール
~ WPF Toolkit のコントロールを本採用 ~
 機能
 BlackoutDates
 選択不可期間を設定
 X 表示
 FirstDayOfWeek
 週の開始曜日
 SelectionMode




Blackout Dates
SingleDate
SingleRange
MultipleRange
None
 DisplayMode
 Month
 Year
 Decade
 Style
Selection Mode
Chart コントロール
~ これだけ出来れば十分でしょう! ~
 チャートの種類
 ColumnSeries
 BarSeries
 PieSeries
 LineSeries
 BubbleSeries
 AreaSeries
 ScatterSeries
縦棒
横棒
円
折れ線
バブル
面
散布図
軸
 LinearAxis, CategoryAxis, DateTimeAxis
 Orientation, Title, Minimum, Maximum, Interval
 カスタマイズ
 各領域にスタイル & テンプレートを適用
 ChartArea, PlotArea, Legend, Title, …
※ Beta2 では未実装
Ribbon コントロール
~ ビジネスアプリケーションには必須アイテム ~
 Office や Windows 7 で採用された UI コンポーネント
 メニューとツールバーが一体化してユーザビリティが向上
<Window.Resources>
 Ribbon CTP として別提供
<r:RibbonCommand x:Key="CutCommand"
 Ribbon モデル







RibbonCommand
Ribbon
RibbonTab
RibbonGroup
RibbonButton, ...
RibbonApplicationMenu
QuickAccessToolbar
CanExecute="CanExecute"
LabelTitle="切り取り"
LargeImageSource="Cut.png" />
<r:RibbonCommand x:Key="PasteCommand"
CanExecute="CanExecute"
LabelTitle="貼り付け"
LargeImageSource="Paste.png" />
</Window.Resources>
<DockPanel>
<r:Ribbon DockPanel.Dock="Top"
Title="ジニアスのリボン">
<r:RibbonTab Label="タブA">
<r:RibbonGroup>
<r:RibbonButton
Command="{StaticResource CutCommand}"/>
<r:RibbonButton
Command="{StaticResource
PasteCommand}"/>
</r:RibbonGroup>
</r:RibbonTab>
</r:Ribbon>
</DockPanel>
Visual State Manager
~ VSM を正式サポート ~
 コントロールテンプレートとスタイルの新モデル
 状態とその状態でのスタイルおよび遷移のトランジションを定義






Normal
MouseOver
Pressed
Disabled
Genius
more ...
:
:
:
:
:
赤
0.5 秒で緑
黄色
灰色
レインボー
 Silverlight の VSM と互換
 Blend 3 よりデザイナ
サポートあり
 WPF 3.5(VS2008)での
利用
 WPF Toolkit をインストール
 参照の追加で ¥Program Files¥WPF Toolkit¥WPFToolkit.dll
データバインディングの変更
~ 細かいコンバータを作らなくても大丈夫 ~
 データバインディング パイプラインを変更
 UI コントロールのプロパティを設定後にバインディングソース
からもう一度プロパティ値を取得するように変更
 Set アクセッサのロジック内でのプロパティ値の変更が反映される
 細かいコンバーターが不要になる
 INotifyPropertyChanged の実装の有無に影響しない
class SimpleClass {
private string _ProductCode;
public string ProductCode {
get { return _ProductCode; }
set {
_ProductCode = value;
if (! String.IsNullOrEmpty(_ProductCode)) {
_ProductCode = _ProductCode.ToUpper();
}
}
}
Easing 関数
~ アニメーションにイージング関数を導入 ~
 EasingFunction プロパティ
 アニメーションにおける値の補完をカスタマイズする機能
 従来は KeySpline で実現
 バネのような動きなど多彩な表現が可能
 11 種類のビルトイン関数
 BackEase, BounceEase, CircleEase, CubicEase,
ElasticEase, ExponentialEase, PowerEase,
QuadraticEase, QuarticEase, QuinticEase, SineEase
 Blend 4 ではデザイナがサポート
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames …>
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="300">
<EasingDoubleKeyFrame.EasingFunction>
<BounceEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
Cached Composition
~ 大幅なパフォーマンス向上が期待できる ~
 CacheMode プロパティ
 コントロールやベクトルジオメトリなど任意のビジュアルを
ビデオメモリにビットマップとしてキャッシュする機能
 再描画の際にキャッシュしたビットマップを使用(GPU処理)
 伸縮・移動・回転時のパフォーマンスを向上
 元サイズより大幅に拡大するとイメージは荒くなる
<Button CacheMode="BitmapCache" Content="Cached" />
<Canvas.CacheMode>
<BitmapCache EnableClearType="False" RenderAtScale="2"/>
</Canvas.CacheMode>
オリジナル
Cache なし(既定)
Cache あり
Layout Rounding
~ くっきりはっきりした UI になります! ~
 UseLayoutRounding プロパティ
 描画をピクセル単位に揃える丸め処理を使用するかどうか
 Silverlight 2 で導入
 WPF 4 では既定値 False
 True の場合は要素をピクセル境界上に強制配置
 従来の WPF はサブピクセルの座標位置を計算し、サブピクセルの
境界線上に位置する要素が複数の物理的なピクセルにわたってアン
チエイリアス化されるためにボケた表示となっていた
16ピクセルのビットマップを
Canvas.Left="0.5" で表示
True
False
Text Rendering API
~ 新しくなったテキスト描画スタック:文字もより明瞭に! ~
 TextFormattingMode 添付プロパティ
 Ideal: WPF 既定のメトリックス
 Display: GDI 互換のメトリックス
<TextBox TextOptions.TextFormattingMode="Ideal" />
<TextBox TextOptions.TextFormattingMode="Display" />
 TextRenderingMode 添付プロパティ
 ClearType:
ClearType オン
 Grayscale:
グレースケール
 Aliased:
Nonアンチエイリアッシング
Selection & Caret Brush
~ テキスト選択の背景色やキャレット色のカスタマイズが可能 ~
<TextBox SelectionBrush="Green"
 Selection ブラシ
SelectionOpacity="0.5">
 SelectionBrush プロパティ
</TextBox>
 テキスト選択時の背景色
 グラデーションなども可能
 SelectionOpacity プロパティ
 ブラシの透明度
 [0.0~1.0]既定 0.6
 Foreground 指定不可
 Silverlight では OK
 SelectionBackground
 SelectionForeground
<TextBox SelectionOpacity="0.7">
<TextBox.SelectionBrush>
<LinearGradientBrush>
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
</TextBox.SelectionBrush>
</TextBox>
 Caret ブラシ
 CaretBrush プロパティ <TextBox CaretBrush="Red"
 カーソルの色
 幅や形状の変更は不可
Text="ジニアス">
</TextBox>
WPF Other Features
~ WPF するなら 絶対に 4.0 がお勧めです ~
 Custom Dictionary
 スペルチェックに使用するカスタム辞書の追加が可能
<TextBox xml:lang="en-US"
SpellCheck.IsEnabled="True">
<SpellCheck.CustomDictionaries>
<sys:Uri>GeniusDic.txt</sys:Uri>
</SpellCheck.CustomDictionaries>
</TextBox>
#LID 1033
GeniusHirai
 Pixel Shader 3.0 のサポート
 WPF 3.5 SP1 は Pixel Shader 2.0 をサポート
 PS 3.0 では劇的に洗練れている
 Radeon X1300-X1950, Intel GMA X3000, GeForce 6, 7
 ハードウェア対応の確認 API
 RenderCapability.IsPixelShaderVersionSupported(3, 0)
 RenderCapability.IsPixelShaderVersionSupportedInSoftware(3, 0)
 RenderCapability.IsShaderEffectSoftwareRenderingSupported
Windows 7 ジャンプリスト
~ コードでも XAML でも OK ~
 app.xml(Application.xaml)で定義
 アプリケーションに渡されたコマンドライン引数で処理を判断
 アイコンは Win32 リソースか ICOファイル
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<JumpList.JumpList>
<JumpList ShowRecentCategory="True" >
<JumpTask CustomCategory="ジニアス"
Title="Wake up!"
Arguments="/wakeup"
IconResourcePath="c:¥MyIcon.ico">
</JumpTask>
</JumpList>
</JumpList.JumpList>
</Application>
Windows 7 タスクバー
~ Windows 7 らしいアプリケーション ~
 TaskbarItemInfoクラスを提供
<Window.TaskbarItemInfo>
<TaskbarItemInfo x:Name="MyTaskbar1"
ProgressState="Paused"
ProgressValue="0.85"
ThumbnailClipMargin="0"
Overlay="redNG.ico"
Description="XAMLで定義">
<TaskbarItemInfo.ThumbButtonInfos>
<ThumbButtonInfo x:Name="tbButton1"
Command="Close"
ImageSource="redNg.ico"
Description="終了"
Click="tbButton1_Click"
CommandTarget="{Binding ElementName=Button1}"" />
</TaskbarItemInfo.ThumbButtonInfos>
</TaskbarItemInfo>
</Window.TaskbarItemInfo>
タッチ & マルチタッチ
~ WPF 4.0 でなら楽勝! ~
 Multi-Touch サポート
 UIElements と UIElements3D を対応
 IsManipulationEnabled プロパティ
 マルチキャプチャのサポート
 マニュピュレーション&イナーシャ
 操作(パン・ズーム・ローテーション)
 慣性(弾き飛ばすような動き)
 境界フィードバック(端までいったらどうする)
 イベント




ManipulationStarting
ManipulationDelta - 各種変換を適用
ManipulationInertiaStarting - 慣性を設定
TouchDown, TouchMove, TouchUp などの RAW
イベントもある
 Mouse イベント ≒ Touch イベント
GUI
NUI
Manipulation イベントハンドリング例
~ 慣性(イナーシャ)と境界フィードバックがミソ! ~
Private Sub Canvas1_ManipulationStarting(…
e.ManipulationContainer = Me
End Sub
Private Sub Canvas1_ManipulationDelta(…
If e.DeltaManipulation.Translation.Length <> 0 Then
TRN.X += e.DeltaManipulation.Translation.X
End If
Dim delta = New ManipulationDelta(Overshoot(e.OriginalSource),
0,
New Vector(1.0, 1.0),
New Vector())
e.ReportBoundaryFeedback(delta)
End Sub
Private Sub Canvas1_ManipulationInertiaStarting(…
e.TranslationBehavior.DesiredDeceleration
= 10 * 96 / (1000 * 1000)
End Sub
ClickOnce 新機能
~ 完全信頼の配置は容易になった ~
 ClickOnce の権限昇格プロンプト
が XBAP にも有効化
 完全信頼の XBAP アプリケーションの
配置が簡略化
 バッググラウンド アップデート
 大きな XBAP の更新もスムーズ
 Script InterOp(XBAP-HTML 相互運用)
 BrowserInteropHelper.HostScript
 XBAP をホストしている window オブジェクトへのアクセス
 Frame 内にホストさせておく
Private Sub Button1_Click(…
Dim so = BrowserInteropHelper.HostScript
MsgBox("これは XBAP から")
so.alert("これは HostScript から")
so.close()
End Sub
<body>
<iframe src="Menu.htm">
</iframe>
<iframe src="FullTrust.xbap">
</iframe>
</body>
Silverlight 4
Technical Workshop for Developer
Silverlight の状況
~ 年1回のバージョンアップ ~
 リリース







2007年 春
2007年9月
2008年 春
2008年10月
2009年 春
2009年7月
2010年
Silverlight
Silverlight
Silverlight
Silverlight
Silverlight
Silverlight
Silverlight
1
1
2
2
3
3
4
(Beta)
リリース
(Beta)
リリース
(Beta)
リリース
(Beta)
 状況
 Version 1 リリースからたった 27ヵ月
 4 億以上のダウンロード(3台に1台)
 全世界で 40 万人を超えるデザイナーと開発者
 30ヵ国で 200 社を超えるパートナー企業
 マイクロソフトも 350 を超えるアプリケーションを展開
 地球上で1万を超えるアプリケーション展開
Silverlight サンプル
~ どうぞ!お試しください ~
 Microsoft Office Web Application(プレビュー版)
 現在開発中の Office の Web バージョン
 Excel, PowerPoint, Word, OneNote を提供
 http://home.live.com/
 SkyDrive に保存
Silverlight サンプル
~ ここまで出来れば文句なし! ~
 MS Health CUI – Patient Journey Demo
 http://www.mscui.net/PatientJourneyDemonstrator/
Silverlight 3 新機能
~ 見た目は完璧に 3D !~
 擬似 3D のサポート
 平面を3次元空間に投影
※ GPU アクセラレーション未対応
<Image Source="genius.jpg">
<Image.Projection>
<PlaneProjection RotationX="-13"
RotationY="-43"
RotationZ="8.5"/>
</Image.Projection>
</Image>
 WriteableBitmap
 任意の UIElement のスクリーンショットが可能
'再生中のメディアからビットマップを作成
Dim bmp As New WriteableBitmap(Video1, Nothing)
'作成したビットマップからImageオブジェクト作成
Dim img As New Image()
img.Height = 128
img.Source = bmp
Silverlight 3 メディア機能
~ 映像の綺麗さと頭出しの快適さをお楽しみ下さい ~
 メディア機能の強化
 IIS Smooth Streaming (IIS Media Services 2.0/3.0併用)
 H.264 / AAC のサポート
<MediaElement Source="HD720p.wmv"
AutoPlay="True" Margin="32">
 HD フルスクリーン再生
<MediaElement.CacheMode>
 コンテンツ保護の強化(DRM)
<BitmapCache />
 GPU アクセラレーション
</MediaElement.CacheMode>
</MediaElement>
<div id="silverlightControlHost">
<param name="enableGPUAcceleration" value="true"/>
<param name="enableCacheVisualization" value="true"/>
 サポートメディア形式
 Windows Media 7, 8, 9,






Advanced Profile(VC1)
Windows Media Audio 7, 8, 9, 10
H.264(Base, Main, High Profiles)
AAC-LC(Low Complexity), MP3
YV12 – YCrCb(4:2:0)
RGBA – 32ビット Alpha, R, G, B
8ビット/16ビットPCM (wav形式)
Silverlight 3 Out-of-Browser
~ Silverlight はついにブラウザの外へ!~
 ブラウザー外実行
 インストール
 デスクトップショートカット
 スタートメニューへの追加
 安全で堅牢なセキュリティ
 変更の自動検知と自動更新
 VSの構成ダイアログで設定
 ネットワーク接続検知
 NetworkAddressChanged イベント
 GetIsNetworkAvailable プロパティ
Silverlight 4 - Printing
~ 待望の印刷機能を実装しました ~
 PrintDocument
 イベント : StartPrint, PrintPage, EndPrint
 メソッド : Print
 PrintPageEventArgs
 プロパティ: PrintableArea, PageVisual, HasMorePages
private void button1_Click(object sender, RoutedEventArgs e) {
PrintDocument pd = new PrintDocument() { DocumentName = "PrintDemo1" };
pd.PrintPage += new EventHandler<PrintPageEventArgs>(pd_PrintPage);
pd.Print();
}
void pd_PrintPage(object sender, PrintPageEventArgs e) {
Canvas root = new Canvas();
TextBlock head = new TextBlock() { Text = "ジニアス", FontSize = 24 };
head.Width = e.PrintableArea.Width;
head.TextAlignment = TextAlignment.Center;
root.Children.Add(head);
e.PageVisual = root;
e.HasMorePages = false;
}
Silverlight 4 - 新機能
~ お客様のご要望にお応えしました ~
 ドラッグ&ドロップ
 UIElement.AllowDrop プロパティ
 UIElement.Drop/DragEnter/DragLeave/DragOver イベント
 マウス制御
 右クリック対応
 MouseRightButtonUp
 MouseRightButtonDown
 ホイール対応
 MouseWheel イベント
 クリップボード
 Clipboard クラス
 GetText, SetText メソッド
 Webカメラ
 CaptureSource クラス
 CaptureDeviceConfiguration
Silverlight 4 – Controls & DataBind
~ データバインドの機能を拡張! バリデーションも OK ~
 RichTextArea コントロール
 リッチテキストの表示・編集
 DataGrid コントロール
 Auto-Size カラム
 ViewBox コントロール
 Stretch と StretchDirection プロパティ
 依存プロパティとのデータバインド
 Slider.Value ⇔ TextBox.Text
 データバインディング
 StringFormat, TargetNullValue, FallbackValue を新設
 SelectedValue と SelectedValuePath
 IDataErrorInfo, INotifyDataErrorInfo のサポート
 ClientHttpWebRequest での クレデンシャルサポート
 req.Credentials = new NetworkCredential(username, password);
Silverlight 4 - Out of Browser
~ デスクトップアプリ並みの快適さ ~
 Sandbox モード
 大きさ、位置、最前列表示などのウィンドウ制御
 NotificationWindow によるトーストポップアップ
 WebBrowser による HTML の表示
 オフライン
if (Application.Current.IsRunningOutOfBrowser) {
Application.Current.MainWindow.TopMost = true;
DRM
NotificationWindow w = new NotificationWindow();
w.Content = new TextBlock() {Text = "ジニアス"};
w.Show(5000);
}
 権限昇格モード
 ローカルファイルシステムへのアクセス
 クロスドメインポリシーファイルの設置が不要
 COM Automation サポート (IDispatch) Windows 限定
if (Application.Current.HasElevatedPermissions) {
File.CreateText(@"c:¥demo.txt"));
}
Silverlight 4 - その他
~ Silverlight 4 で大規模ビジネスアプリケーション開発 ~
 IME 対応
 InputMethod.SetPreferredImeState メソッド
 IME のオン・オフ
 InputMethod.SetPreferredImeConversionMode メソッド
 入力モード(Katakana, FullShape, Fixed, Native, … )
InputMethod.SetPreferredImeConversionMode(TextBox1,
ImeConversionModeValues.Katakana)
 WCF RIA Services(旧 .NET RIA Services)
 JSON(JavaScript Object Notation)フォーマット
 VS2010 テンプレートも提供
 Silverlight Business Application
 WCF RAI Services Class Library
 Right-to-Left サポート
 FlowDirection プロパティ
 アラビア語、ヘブライ語をサポート
第15回 .NET勉強会/ヒーロー島
アンケートにご協力ください。
本セッション専用のアンケート用紙がございます。
ご面倒をお掛けしますが、ご協力ほどお願いします。
Fly UP