첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

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>
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요