728x90
728x170
■ DrawingBrush 엘리먼트를 사용하는 방법을 보여준다.
▶ MainWindow.xaml
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800"
Height="600"
Title="DrawingBrush 엘리먼트 사용하기"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<MeshGeometry3D x:Key="CubeMeshGeometry3DKey"
Positions="-0.5 0.5 0.5, 0.5 0.5 0.5,
-0.5 -0.5 0.5, 0.5 -0.5 0.5,
0.5 0.5 -0.5, -0.5 0.5 -0.5,
0.5 -0.5 -0.5, -0.5 -0.5 -0.5,
-0.5 0.5 -0.5, -0.5 0.5 0.5,
-0.5 -0.5 -0.5, -0.5 -0.5 0.5,
0.5 0.5 0.5, 0.5 0.5 -0.5,
0.5 -0.5 0.5, 0.5 -0.5 -0.5,
-0.5 0.5 -0.5, 0.5 0.5 -0.5,
-0.5 0.5 0.5, 0.5 0.5 0.5,
0.5 -0.5 -0.5, -0.5 -0.5 -0.5,
0.5 -0.5 0.5, -0.5 -0.5 0.5"
TriangleIndices=" 0 2 1, 1 2 3
4 6 5, 5 6 7,
8 10 9, 9 10 11,
12 14 13, 13 14 15
16 18 17, 17 18 19
20 22 21, 21 22 23"
TextureCoordinates="0 0, 1 0, 0 1, 1 1,
0 0, 1 0, 0 1, 1 1,
0 0, 1 0, 0 1, 1 1,
0 0, 1 0, 0 1, 1 1,
0 0, 1 0, 0 1, 1 1,
0 0, 1 0, 0 1, 1 1" />
<DiffuseMaterial x:Key="EllipseDiffuseMaterialKey">
<DiffuseMaterial.Brush>
<DrawingBrush
RenderOptions.CachingHint="Cache"
Viewport="0 0 0.2 0.2"
TileMode="Tile">
<DrawingBrush.Drawing>
<GeometryDrawing Brush="RoyalBlue">
<GeometryDrawing.Pen>
<Pen Brush="DarkBlue" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<EllipseGeometry
RadiusX="4"
RadiusY="4" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
<DiffuseMaterial x:Key="BrickDiffuseMaterialKey">
<DiffuseMaterial.Brush>
<DrawingBrush
RenderOptions.CachingHint="Cache"
Viewport="0 0 0.1 0.1"
TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="LightGray">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0 0 20 20" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Brown">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0 1 9 8" />
<RectangleGeometry Rect="11 1 9 8" />
<RectangleGeometry Rect="1 11 18 8" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
<DiffuseMaterial x:Key="HatchDiffuseMaterialKey">
<DiffuseMaterial.Brush>
<DrawingBrush
RenderOptions.CachingHint="Cache"
Viewport="0 0 0.2 0.2"
ViewboxUnits="Absolute"
Viewbox="0 0 100 100"
TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing
Brush="White"
Geometry="M 0 0 L 100 0 L 100 100 L 0 100 Z" />
<GeometryDrawing
Geometry="M -10 77.5 L 22.5 110
M -10 52.5 L 47.5 110
M -10 27.5 L 72.5 110
M -10 2.5 L 97.5 110
M 2.5 -10 L 110 97.5
M 27.5 -10 L 110 72.5
M 52.5 -10 L 110 47.5
M 77.5 -10 L 110 22.5">
<GeometryDrawing.Pen>
<Pen Brush="Black" Thickness="4" />
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</Window.Resources>
<DockPanel>
<ScrollBar Name="horizontalScrollBar" DockPanel.Dock="Bottom"
Orientation="Horizontal"
Minimum="-180"
Maximum="180"
LargeChange="10"
SmallChange="1" />
<ScrollBar Name="verticalScrollBar" DockPanel.Dock="Right"
Orientation="Vertical"
Minimum="-180"
Maximum="180"
LargeChange="10"
SmallChange="1" />
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D
Geometry="{StaticResource CubeMeshGeometry3DKey}"
Material="{StaticResource EllipseDiffuseMaterialKey}"
BackMaterial="{StaticResource EllipseDiffuseMaterialKey}">
<GeometryModel3D.Transform>
<TranslateTransform3D
OffsetX="-1.5"
OffsetY="1.5" />
</GeometryModel3D.Transform>
</GeometryModel3D>
<GeometryModel3D
Geometry="{StaticResource CubeMeshGeometry3DKey}"
Material="{StaticResource BrickDiffuseMaterialKey}" />
<GeometryModel3D
Geometry="{StaticResource CubeMeshGeometry3DKey}"
Material="{StaticResource HatchDiffuseMaterialKey}">
<GeometryModel3D.Transform>
<TranslateTransform3D
OffsetX="1.5"
OffsetY="-1.5" />
</GeometryModel3D.Transform>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
<ModelVisual3D.Transform>
<Transform3DGroup>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D
Axis="0 1 0"
Angle="{Binding ElementName=horizontalScrollBar, Path=Value}" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D
Axis="1 0 0"
Angle="{Binding ElementName=verticalScrollBar, Path=Value}" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</ModelVisual3D.Transform>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<AmbientLight Color="White" />
</ModelVisual3D.Content>
</ModelVisual3D>
<Viewport3D.Camera>
<PerspectiveCamera
Position="0 0 8"
LookDirection="0 0 -10"
UpDirection="0 1 0"
FieldOfView="45" />
</Viewport3D.Camera>
</Viewport3D>
</DockPanel>
</Window>
728x90
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] SpecularMaterial 엘리먼트 사용하기 (0) | 2019.08.26 |
---|---|
[C#/WPF] DrawingBrush 엘리먼트 사용하기 (0) | 2019.08.26 |
[C#/WPF] VisualBrush 엘리먼트 사용하기 (0) | 2019.08.25 |
[C#/WPF] VisualBrush 엘리먼트 사용하기 (0) | 2019.08.25 |
[C#/WPF] VisualBrush 엘리먼트 : Visual 속성을 사용해 텍스트 표시하기 (0) | 2019.08.25 |
[C#/WPF] MeshGeometry3D 엘리먼트 : TextureCoordinates 속성을 사용해 정육면체의 브러시 매핑하기 (0) | 2019.08.24 |
[C#/WPF] MeshGeometry3D 엘리먼트 : TextureCoordinates 속성을 사용해 정육면체의 브러시 매핑하기 (0) | 2019.08.24 |
[C#/WPF] ImageBrush 엘리먼트 : Viewport 속성 사용하기 (0) | 2019.08.24 |
[C#/WPF] ImageBrush 엘리먼트 사용하기 (0) | 2019.08.21 |
[C#/WPF] MeshGeometry3D 엘리먼트 : TextureCoordinates 속성을 사용해 12면체의 브러시 매핑하기 (0) | 2019.08.21 |