■ DrawingBrush 엘리먼트 사용하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


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>

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker