XAML Do-It-Yourself シリーズ 第 11 回 2D グラフゖックス -1-

Similar documents
XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

XAML Do-It-Yourself シリーズ 第 8 回ゕニメーション -1-

XAMLDo-It-Yourself 第 2 回. レゕウト 今回は XAML でウゖンドウにパネルやボタン メニューなどの基本的なコントロールを配置する方法を 学びます ここでは 次のことを学習します XAML におけるレゕウトの基本 主要なパネルとその記述方法 XAML (WPF) で利用可能な

XAML Do-It-Yourself シリーズ 第 7 回テンプレート -1-

XAML Do-It-Yourself シリーズ 第 12 回 3D グラフィックス -1-

XAML Do-It-Yourself シリーズ 第 1 回 XAML 概要 -1-

Sparkline for WPF

WPFの初歩の初歩

PowerPoint プレゼンテーション

piyo0702a.rtfd

Carousel for WPF/Silverlight


PowerPoint プレゼンテーション

HCI プログラミング 5 回目ウィンドウに画像を表示してみよう 今日の講義で学ぶ内容 画像の表示 画像のエフェクト 画像のビューポート指定 画像の表示 1 画像を表示してみましょう 画像の表示はクラス ImageView により管理されます ソースファイル名 :Sample5_1.java //

グラフィックス 目次

Chart3D for WPF/Silverlight

WPF アプリケーションの 多言語切替

Visual Studio 2010 Ready Day ブレークアウトセッション概要

グラフィックス 目次

グラフィックス 目次

Visual Studio Do-It-Yourself シリーズ 第 11 回テーマとスキン

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

Microsoft PowerPoint - [150421] CMP実習Ⅰ(2015) 橋本 CG編 第1回 幾何変換.pptx

Visual Studio Do-It-Yourself シリーズ 第 1 回 Windows ゕプリケーション開発の概要 -1-

グラフィックス 目次

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

Microsoft Word - 415Illustrator

モデリングとは

新しいイテレーション型開発

画像参照画像送り 5 画像下部に再生ボタンが表示されます 再生ボタンをクリックすると 自動コマ送りされます 1

Microsoft Word - サンプル _図面編集_.doc

Silverlight を使用したデータアプリケーション開発手順

基本作図・編集

基本作図・編集

問 1 図 1 の図形を作るプログラムを作成せよ 但し ウィンドウの大きさは と し 座標の関係は図 2 に示すものとする 図 1 作成する図形 原点 (0,0) (280,0) (80,0) (180,0) (260,0) (380,0) (0,160) 図 2 座標関係 問 2

基本作図・編集

<907D945D F D C789C195CF8D5888EA97978CF68A4A97702E786C7378>

クリッピング領域

Sample 本テキストの作成環境は 次のとおりです Windows 7 Home Premium Microsoft Excel 2010( テキスト内では Excel と記述します ) 画面の設定( 解像度 ) ピクセル 本テキストは 次の環境でも利用可能です Windows

[ 学習動画 ] 一覧 学習の閲覧や質問の際にご利用ください 閲覧が終了した動画をチェックして 学習の進行状況を確認しましょう! グラフィックリファレンス 閲覧チェック 動画タイトル 時間 ( 計 20 時 10 分 ) Step1 Illustratorの基本操作 Illustratorの起動と基

Autodesk Revit Building 基礎コース

Visual Studio Do-It-Yourself 第 3 回コントロール 今回は Windows ゕプリケーションのユーザーンターフェスを作成する際に使う基本的なコントロ ールについて学びます ここでは 次のことを学習します 主要なコントロールとその機能 XAML を使ったコントロールの配置

< F2D D E6A7464>

Autodesk Revit Structure 2014

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

BarCode for WPF

Microsoft Word - 2.IJCAD Electrical 基本マニュアル.doc

000

目次 1. アニメーションの軌跡の概要と仕組み 3 2. パノラマ写真にアニメーションの軌跡を設定 まとめ 課題にチャレンジ 19 レッスン内容 アニメーションの軌跡の概要と仕組み アニメーションの軌跡とは スライドに配置したオブジェクト ( テキストや図形 画像など ) を

Processingをはじめよう

PowerPoint プレゼンテーション

// ステージを設定します stage.setscene(scene); stage.settitle(" キャンバス "); // ステージを表示します stage.show(); public static void main(string[] args) launch(args); キャンバス

<4D F736F F F696E74202D AC C8899E D834F E >

Word2007 Windows7 暮らしのパソコンいろは 早稲田公民館 ICT サポートボランティア

ARCHITREND ZERO 汎用コマンド一覧

200_CAD(画面回りの機能)の基本操作

アスペクトの相互作用を解消するアスペクトの提案

pp2018-pp4base

スライド 1

MISAO with WPF

CocoaDrawingGuide

もくじ 概要 1 外部からファイルを取り込む 1 ファイルリスト 2 表示タブ 2 ファイルリストの表示形式 2 ファイル操作 3 図面を開く 3 ファイルリストの更新 3 ファイルリストの表示形式 4 ファイルのカット 貼り付け 4 名前の変更 4 新規フォルダー作成 4 ファイル フォルダの削除

HOW DO I WebBrowser コントロールで HTML5 を 使用するには ここでは以下の手順で説明します Video 要素を使用する Silverlight と JavaScript の間でやり取りする Canvas 要素を使用する Video 要素を使用する 1. Visual Stu

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

目次 1. プロフィール画像工房の概要 3 2. プロフィール画像の作成 8 3. プロフィール画像の登録 まとめ 27 レッスン内容 プロフィール画像工房 インターネット上に提供されているさまざまなサービス ( これ以降 サービス と記述します ) を利用するときには 利用するユーザー

YKToolkit.Controls 取扱説明書 Ver YKSoftware

レコード class Point attr_accessor("x", "y") インスタンス変数の宣言 point.rb

Border Width と記述します id 属性 div3 の div 要素を記述し 中にテキストで Border Radius と記述します id 属性 div4 の div 要素を記述し 中に span 要素を1つ記述しその中にテキストで Border All<br />(Color,Widt

Microsoft Word - Grspes…~…j…}…j…–…A…‰6.0.doc


Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

MISAO with WPF

<!DOCTYPE html> <html> <head> <title>spaceorbitanime</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="spaceorbitanime.css">

208_DM図面作成

CG

manua6.PDF

本テキストの作成環境は 次のとおりです Windows 7 Home Premium Microsoft Excel 2010( テキスト内では Excel と記述します ) 画面の設定 ( 解像度 ) ピクセル 本テキストは 次の環境でも利用可能です Windows 7 Home

演習2

PowerPoint プレゼンテーション

transform: skewx(x 軸の傾斜角度 ) transform: skewy(y 軸の傾斜角度 ) transform: skew(x 軸の傾斜角度, Y 軸の傾斜角度 ) skewx( ) は X 軸に沿って傾斜します skewy( ) は Y 軸に沿って傾斜します skew( ) は

overflow プロパティの指定は 親ボックスのスタイルに記述します overflow プロパティは position プロパティ (position: static; 以外 ) の指定がされていなと適用されません ボックスの外にはみ出た部分を表示させたくないときに hidden を使用します サ

Wordの学習

Imaging for UWP

武蔵12_体験版操作説明書(平面図の編集例)

Microsoft PowerPoint ppt

サンプル CSS OutlineAnimation.html の説明 HTML の記述 (OutlineAnimation.html) id 属性 stage の div 要素を作り その中に div 要素でボックスを記述します id 属性 div1 の div 要素を記述し 中にテキストで Out

目次 1. プロフィール画像工房の概要 3 2. プロフィール画像の作成 9 3. プロフィール画像の登録 まとめ 29 レッスン内容 プロフィール画像工房 インターネット上に提供されているさまざまなサービス ( これ以降 サービス と記述します ) を利用するときには 利用するユーザー

Web 設計入門

ComicStudio4.0ショートカット一覧

ドラフトボードの概要 画面構成 メニュー バー ツール パレット メッセージ ライン ステータス ライン 作図 編集以外の機能がこのメニューから選択できます 作図と編集で利用できるツール パレットです 選択されたツールや操作手順が表示されます 現在の情報が表示されます 数値入力も可能です (1)

padding( パディング ) padding プロパティでボックスの内側の余白を指定します この部分の内側には背景 ( 背景色や背景画像 ) を表示できます border( ボーダー ) border プロパティでボックスの境界線を指定します ボーダーには色 太さ 線の種類を指定できます 画像で

簡単ラベル作成 印刷マニュアル

1222-A Transform Function Order (trsn

ToDo: 今回のタイトル

Microsoft PowerPoint - CSS(Cascading Style Sheets)の基本.pptx

<4D F736F F D AF89E6919C B834A C9F8DF B838B82CC82B B F E646F63>

目次 特長...1 仕様...1 梱包内容...1 Macシステムの要件...1 はじめに...2 ファンクションキーの説明...3 [Preferences]( 環境設定 )...4 描画...5 測定...5 測定の調節...6 角度の測定...7 円形の測定...8 楕円形の測定...9 直線

PowerPoint プレゼンテーション

ExtendedLibrary for WPF/Silverlight

pp2018-pp9base

Transcription:

XAML Do-It-Yourself シリーズ 第 11 回 2D グラフゖックス -1-

XAML Do-It-Yourself 第 11 回 2D グラフゖックス XAML Do-It-Yourself 第 11 回は 2D グラフゖックスについて学習します XAML を使って作成する WPF ゕプリケーションでは 従来の Windows フォームゕプリケーションと 比較して 2D および 3D グラフゖックスが非常に容易に扱えるようになっています ここでは 2D グラフゖックスついて 次のことを学習します Shape 派生クラスによる基本図形の描画 PathGeometry を使った複雑な図形の描画 ビットマップ画像の表示とエフェクト Shape 派生クラスによる描画 XAML で 2D グラフゖックスを描画する方法はいくつかありますが Shape クラスの派生クラスを使った場合と Geometry クラスの派生クラスを使った場合の 2 つに大きく分けることができます まず Shape クラスの派生クラスを用いるグラフゖックスについて紹介します Shape クラスの派生クラスには 次に示すような基本的な図形が含まれています Shape クラスの派生クラス クラス 概要 Ellipse 楕円 Rectangle 矩形 Line 直線 Polyline 連続した直線 Path 直線や円弧などを複合した図形 Polygon 多角形 この中で Path は直線や円弧を連続して使用し図形を描画するというものですが それ以外の図形は非常 に基本的なものです なお Polygon は Polyline と似ていますが これは連続する直線の始点と終点を 結んだ 閉じた多角形を描画します これらの図形を XAML で記述するのは非常に簡単です 図形を描画したい領域の左上隅を原点として 図 形の座標を指定します なお座標は " デバス独立ピクセル " と呼ばれるピクセル単位で指定を行います 精度は倍精度浮動小数点 (double) です 例えばパネルの原点から (100,100) の位置に直線を描画する場合は 次のように (X1,Y1) = (0,0) と (X2,Y2) = (100,100) を属性で指定します ここでは色や線の太さも指定しています -2-

<Grid> <Line X1="0" Y1="0" X2="100" Y2="100" Stroke="Black" StrokeThickness="3"/> ほかの図形でも同様に 必要な座標を指定することで簡単に描画できます それぞれの図形の例として次 のコードを紹介します <Window x:class="wpfapplication11.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="450"> <Grid ShowGridLines="True"> <Grid.RowDefinitions> </Grid.RowDefinitions> <Grid.ColumnDefinitions> </Grid.ColumnDefinitions> <!-- 1 行 1 列目直線 --> <Line Grid.Row="0" Grid.Column="0" X1="15" Y1="25" X2="80" Y2="80" Stroke="Black" StrokeThickness="3"/> <!-- 1 行 2 列目楕円 --> <Ellipse Grid.Row="0" Grid.Column="1" Width="100" Height="100" Stroke="Green" StrokeThickness="3"/> <!-- 1 行 3 列目矩形 --> <Rectangle Grid.Row="0" Grid.Column="2" Stroke="Red" StrokeThickness="5" Width="100" Height="90"/> <!-- 2 行 1 列目連続した直線 --> <Polyline Grid.Row="1" Grid.Column="0" Margin="10,10,10,10" Stroke="Blue" StrokeThickness="4" Points="0,0 30,60 60,40 90,100" /> <!-- 2 行 2 列目多角形 --> <Polygon Grid.Row="1" Grid.Column="1" Stroke="Black" StrokeThickness="2" Margin="10"> <Polygon.Points> <Point X="0" Y="0"/> <Point X="60" Y="30"/> <Point X="30" Y="60" /> <Point X="70" Y="90" /> <Point X="0" Y="120" /> -3-

</Polygon.Points> </Polygon> <!-- 2 行 3 列目複数の図形 --> <Line Grid.Row="1" Grid.Column="2" Margin="10" X1="0" Y1="0" X2="100" Y2="100" Stroke="Black" StrokeThickness="3"/> <Line Grid.Row="1" Grid.Column="2" Margin="10" X1="100" Y1="0" X2="0" Y2="100" Stroke="Black" StrokeThickness="3"/> <Ellipse Grid.Row="1" Grid.Column="2" Margin="10" Stroke="Orange" StrokeThickness="3"/> </Window> このコードでは Grid パネルを 6 分割して それぞれのセルにさまざまな図形を描画します 実行すると 次のような表示になります <Polyline> 要素では Margin 属性を指定していますが これを指定すると 指定した分だけ原点が移動 します <Polyline> 要素や <Polygone> 要素では座標を複数個指定します この場合の座標の指定方法は 上記の <Polyline> 要素のように Points 属性に座標をスペースで区切って記述することも <Polygone> 要素のように <Polygone.Points> 要素を記述して <Point> 要素で 1 つずつ座標を指定することも可能です -4-

なお Path については 後ほど説明します Geometry 派生クラスを使った描画 Shape の派生クラスによる描画は非常にシンプルですが 複雑な図形を描画する場合は記述が大変です より複雑な図形を描画する場合は Geometry クラスの派生クラスを使って図形を描画します Geometry クラスの主な派生クラスを示します Geometry の派生クラス クラス LineGeometry RectangleGeometry EllipseGeometry PathGeometry StreamGeometry GeometryGroup CombineGeometry 概要直線矩形楕円複合した図形の記述短縮型のパスの記述複数の Geometry をグループ化 Geometry の結合 この中で実際に図形の定義が行えるのは LineGeometry RectangleGeometry EllipseGeometry の 3 つです これらの図形を組み合わせて複雑な図形を作成していきます ただし Geometry の派生クラスは これらの Geometry クラスを使って図形を定義するものの 実際の描画は行いません 描画を行うためには Shape クラスの派生クラスに含まれる Path を利用します この方法で たとえば (0,0) から (100,100) に直線を描画する場合は 次のように記述します <Grid> <Path Stroke="Black" StrokeThickness="3"> <Path.Data> <LineGeometry StartPoint="0,0" EndPoint="100,100" /> </Path.Data> </Path> また PathGeometry を使って複数の基本的な図形を組み合わせた図形を作成することもできます PathGeometry ではさらに LineSegment ( 直線 ) PolylineSegment ( 連続する直線 ) ArcSegment ( 円弧 ) BezierSegment ( ベジエ曲線 ) PolyBezierSegment ( 連続するベジエ曲線 ) などを使って 図形を記述できます この場合も 実際に描画を行うには <Path> 要素を使用します <Window x:class="wpfapplication11.window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <Path Stroke="Blue" StrokeThickness="2"> <Path.Data> -5-

<PathGeometry> <PathGeometry.Figures> <PathFigureCollection> <PathFigure StartPoint="10,100"> <!-- 開始座標 --> <PathFigure.Segments> <PathSegmentCollection> <!-- 図形の指定 --> <LineSegment Point="20,50" /> <ArcSegment Size="100,50" RotationAngle="45" IsLargeArc="True" SweepDirection="CounterClockwise" Point="200,100" /> <LineSegment Point="10,100" /> </PathSegmentCollection> </PathFigure.Segments> </PathFigure> </PathFigureCollection> </PathGeometry.Figures> </PathGeometry> </Path.Data> </Path> </Window> この記述では 直線と円弧を連続して描き さらに始点までを直線で閉じた図形を描画します StreamGeometry を使った描画 上記のような XAML の記述では 要素の階層が深く 分かりにくくなっています そこで同様の図形を 今度は StreamGeometry を使って描画してみます これは次のようになります <Window x:class="wpfapplication11.window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" -6-

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window2" Height="300" Width="300"> <Grid> <Path Stroke="Red" StrokeThickness="2" Data="M 10,100 L 20,50 A 100,50 45 1 0 200,100 L 10,100 Z" /> </Window> StreamGeometry では 描画の指示をコマンドとパラメーターで指定できます 上記の例では 次のよ うな 4 つのコマンドが Data 属性に含まれています M 10,100 L 20,50 A 100,50 45 1 0 200,100 L 10,100 Z "M" は描画開始座標の移動を表します "L" は直線を "A" は円弧を描画します そして "Z" がコマン ドの終了を表します StreamGeometry を利用すると コンパクトに図形を表現できます また 今回は紹介しませんが GeometryGroup を使って複数の図形をグループにまとめたり CombineGeometry を使って 図形を結合したりすることも可能です これらを利用することで さらに 複雑な図形を効率よく描画できます ビットマップ画像とエフェクト 2D グラフゖックスで重要なビットマップ画像の描画についても確認しておきましょう これまでも ListBox による一覧表示で画像を使用しました 画像を描画するには <Image> 要素を用います <Grid> <Image Source="image/Tree.jpg" Width="200" Height="150" Stretch="Uniform"/> 画像は Width 属性と Height 属性で指定した大きさで描画されますが Stretch 属性により描画内容は 変化します Stretch 属性には "None" "Fill" "Uniform" "UniformToFill" の 4 種類が指定できま す "None" は画像をそのまま描画します 描画領域よりも画像が大きい場合は 画像の左上部分のみが描画されます "Fill" は指定した領域に収まるように 画像が縮小 ( 拡大 ) されます 場合によっては画像の縦横の比率が変化します "Uniform" は画像の縦横比を変えないで 指定された領域に収まるサズで描画されます 縦横比によっては 描画されない領域が発生します 最後の "UniformToFill" は 縦横比を変化させないで 指定された領域いっぱいに画像が描画されます この場合は画像の一部が描画されない場 -7-

合があります 以下に実際の描画例を示します なおここでは プロジェクト内の image フォルダーに "Autumn Leaves.jpg" という画像フゔルがあるものとします <Window x:class="wpfapplication11.window3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window3" Height="350" Width="450"> <Window.Resources> <Style TargetType="Image"> <Setter Property="Width" Value="170" /> <Setter Property="Height" Value="100" /> <Setter Property="Source" Value="image Autumn Leaves.jpg"/> </Style> </Window.Resources> <Grid ShowGridLines="True"> <Grid.RowDefinitions> </Grid.RowDefinitions> <Grid.ColumnDefinitions> </Grid.ColumnDefinitions> <StackPanel Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGray"> <Label>Stretch=None</Label> <Image Stretch="None" /> <StackPanel Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGray"> <Label>Stretch=Fill</Label> <Image Stretch="Fill"/> <StackPanel Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGray"> <Label>Stretch=Uniform</Label> <Image Stretch="Uniform"/> <StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGray"> <Label>Stretch=UniformToFill</Label> <Image Stretch="UniformToFill"/> </Window> このコードを実行すると 4 つの Stretch 属性の指定結果を確認できます -8-

画像のエフェクトまた 画像にさまざまなエフェクトをかけて描画することもできます 画像のエフェクトには ぼかしを行う BlurBitmapEffect 立体的なボタンのように描画する BevelBitmapEffect 影を付ける DropShadowBitmapEffect 画像の回りをぼかす OuterGlowBitmapEffect などが用意されています これらの画像のエフェクトは次のコードで確認できます 実行には画像フゔルが必要です <Window x:class="wpfapplication11.window4" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window4" Height="350" Width="450"> <Window.Resources> <Style TargetType="Image"> <Setter Property="Width" Value="170" /> <Setter Property="Height" Value="100" /> <Setter Property="Source" Value="image Tree.jpg"/> <Setter Property="Stretch" Value="Uniform"/> </Style> </Window.Resources> <Grid ShowGridLines="True"> <Grid.RowDefinitions> </Grid.RowDefinitions> <Grid.ColumnDefinitions> -9-

</Grid.ColumnDefinitions> <StackPanel Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" > <Label>BlurBitmapEffect</Label> <Image > <Image.BitmapEffect> <BlurBitmapEffect Radius="2" KernelType="Box" /> </Image.BitmapEffect> </Image> <StackPanel Grid.Row="0" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" > <Label>BevelBitmapEffect</Label> <Image > <Image.BitmapEffect> <BevelBitmapEffect BevelWidth="10" /> </Image.BitmapEffect> </Image> <StackPanel Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" > <Label>DropShadowBitmapEffect</Label> <Image > <Image.BitmapEffect> <DropShadowBitmapEffect Color="Gray" ShadowDepth="10"/> </Image.BitmapEffect> </Image> <StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" > <Label>OuterGlowBitmapEffect</Label> <Image > <Image.BitmapEffect> <OuterGlowBitmapEffect GlowColor="Black" GlowSize="10" /> </Image.BitmapEffect> </Image> </Window> このコードを実行すると ビットマップ画像に設定された 4 種類のエフェクトが確認できます -10-

まとめ今回は 2D グラフゖックスの基本的な操作と ビットマップ画像の表示について学習しました 複雑な図形を描画する場合は StreamGeometry を利用することで XAML の要素の記述を省略することができます 次回は 3D グラフゖックスについて学習します -11-