WPF example Viewport2DVisual3D

索引サイト表示
tykyunc2 (2011-03-30) より移動

関連 : http://d.hatena.ne.jp/TYKYUNC/20110330/1301507651




<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Wpf-XX-5555" Height="500" Width="800">
<Window.Resources>
<MeshGeometry3D x:Key="Geometry3" TriangleIndices="0,1,2 3,4,5" Positions="150,0,1 350,0,1 350,200,1 350,200,1 150,200,1 150,0,1 " TextureCoordinates="0,1 1,1 1,0 1,0, 0,0 0,1"/>
<MeshGeometry3D x:Key="Geometry2" TriangleIndices="0,1,2 3,4,5" Positions="150,0,3 350,0,3 350,200,3 350,200,3 150,200,3 150,0,3 " TextureCoordinates="0,1 1,1 1,0 1,0, 0,0 0,1"/>
<MeshGeometry3D x:Key="Geometry1" TriangleIndices="0,1,2 3,4,5" Positions="150,0,5 350,0,5 350,200,5 350,200,5 150,200,5 150,0,5 " TextureCoordinates="0,1 1,1 1,0 1,0, 0,0 0,1"/>
</Window.Resources>

<Grid OpacityMask="#FF8888F2" Width="760" Margin="0">
<Grid.RowDefinitions>
<RowDefinition Height="5*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="500*" />
<ColumnDefinition Width="100*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<Viewport3D HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,0,15,0" Grid.RowSpan="6" OpacityMask="#FF8B8BEB">
<ModelVisual3D >
<ModelVisual3D.Content>
<AmbientLight Color="#FFFFFFFF"/>
</ModelVisual3D.Content>
</ModelVisual3D>

<Viewport2DVisual3D Geometry="{StaticResource Geometry1}">
<Viewport2DVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="{Binding ElementName=Slider331,Path=Value}" Axis="0 1 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Visual>
<Canvas Width="200" Height="200" Background="LightSteelBlue">
<Rectangle Width="200" Height="200" Stroke="Black" StrokeThickness="2" />
<Label Canvas.Left="90" Canvas.Top="30" Content="Page1" Height="50" Width="80" FontSize="24" Background="AliceBlue" />
</Canvas>
</Viewport2DVisual3D.Visual>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true"/>
</Viewport2DVisual3D.Material>
</Viewport2DVisual3D>

<Viewport2DVisual3D Geometry="{StaticResource Geometry2}">
<Viewport2DVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="{Binding ElementName=Slider332,Path=Value}" Axis="0 1 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Visual>
<Canvas HorizontalAlignment="Left" VerticalAlignment="top" Width="200" Height="200" Background="LightSteelBlue">
<Rectangle Width="200" Height="200" Stroke="Black" StrokeThickness="2" />
<Label Canvas.Left="90" Canvas.Top="30" Content="Page2" Height="50" Width="80" FontSize="24" Background="AliceBlue" />
</Canvas>
</Viewport2DVisual3D.Visual>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true"/>
</Viewport2DVisual3D.Material>
</Viewport2DVisual3D>

<Viewport2DVisual3D Geometry="{StaticResource Geometry3}">
<Viewport2DVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="{Binding ElementName=Slider333,Path=Value}" Axis="0 1 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Visual>
<Canvas HorizontalAlignment="Left" VerticalAlignment="top" Width="200" Height="200" Background="LightSteelBlue">
<Rectangle Width="200" Height="200" Stroke="Black" StrokeThickness="2" />
<Label Canvas.Left="90" Canvas.Top="30" Content="Page3" Height="50" Width="80" FontSize="24" Background="AliceBlue" />
</Canvas>
</Viewport2DVisual3D.Visual>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true"/>
</Viewport2DVisual3D.Material>
</Viewport2DVisual3D>

<Viewport3D.Camera>
<PerspectiveCamera Position="200,100,700" LookDirection="0,0,-1" FieldOfView="35" UpDirection="0,1,0"/>
</Viewport3D.Camera>
</Viewport3D>
<StackPanel Grid.Column="1" Grid.Row="2" HorizontalAlignment="Stretch" Margin="5" Name="StackPanel4" VerticalAlignment="Stretch">
<Slider Name="Slider331" Maximum="60" Minimum="-72" Value="60" />
<Slider Name="Slider332" Maximum="60" Minimum="-72" Value="72" />
<Slider Name="Slider333" Maximum="60" Minimum="-72" Value="72" />
</StackPanel>
<StackPanel Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" Margin="4,5,1,5" Name="StackPanel33" VerticalAlignment="Stretch">
<TextBox Height="22" Name="TextBox331" Text="{Binding ElementName=Slider331, Path=Value}" />
<TextBox Height="22" Name="TextBox332" Text="{Binding ElementName=Slider332, Path=Value}" />
<TextBox Height="22" Name="TextBox333" Text="{Binding ElementName=Slider333, Path=Value}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="2" HorizontalAlignment="Stretch" Margin="4,5,1,5" Name="StackPanel43" VerticalAlignment="Stretch">
<Button Content="1" Height="22" HorizontalAlignment="Stretch" Margin="0" Name="Button431" VerticalAlignment="Stretch" Grid.Column="3" Grid.Row="2">
<Button.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider331" Storyboard.TargetProperty="Value" To="0"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider332" Storyboard.TargetProperty="Value" To="72"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider333" Storyboard.TargetProperty="Value" To="72"/>
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
<Button Content="2" Height="22" HorizontalAlignment="Stretch" Margin="0" Name="Button432" VerticalAlignment="Stretch" Grid.Column="3" Grid.Row="2">
<Button.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider331" Storyboard.TargetProperty="Value" To="-62"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider332" Storyboard.TargetProperty="Value" To="0"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider333" Storyboard.TargetProperty="Value" To="72"/>
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
<Button Content="3" Height="22" HorizontalAlignment="Stretch" Margin="0" Name="Button433" VerticalAlignment="Stretch" Grid.Column="3" Grid.Row="2">
<Button.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider331" Storyboard.TargetProperty="Value" To="-68"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider332" Storyboard.TargetProperty="Value" To="-65"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider333" Storyboard.TargetProperty="Value" To="0"/>
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
<StackPanel Grid.Column="4" Grid.Row="2" HorizontalAlignment="Stretch" Margin="4,5,1,5" Name="StackPanel53" VerticalAlignment="Stretch">
<Button Content="≫" Height="22" HorizontalAlignment="Stretch" Margin="0" Name="Button531" VerticalAlignment="Stretch" Grid.Column="3" Grid.Row="2" >
<Button.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider331" Storyboard.TargetProperty="Value" To="72"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider332" Storyboard.TargetProperty="Value" To="72"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider333" Storyboard.TargetProperty="Value" To="72"/>
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
<Button Content="--" Height="22" HorizontalAlignment="Stretch" Margin="0" Name="Button532" VerticalAlignment="Stretch" Grid.Column="3" Grid.Row="2" />
<Button Content="≪" Height="22" HorizontalAlignment="Stretch" Margin="0" Name="Button533" VerticalAlignment="Stretch" Grid.Column="3" Grid.Row="2" >
<Button.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider331" Storyboard.TargetProperty="Value" To="-68"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider332" Storyboard.TargetProperty="Value" To="-68"/>
<DoubleAnimation Duration="0:0:0.5" Storyboard.TargetName="Slider333" Storyboard.TargetProperty="Value" To="-68"/>
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
</Grid>
</Window>



AX