2013-12-23 3 views
5

그래프 용지의 모양과 비슷하게 그리드를 만들기 위해 캔버스의 배경에 다른 색의 직선을 그려야합니다. 다음 코드는 빨간색 선만 그리는 데 적합합니다. 또한 파란색 선과 회색 선을 그려야합니다. 즉, 두 줄 이상의 세트가 필요하다는 것을 의미하며 지금까지는 새로운 색상 세트 세트를 그리는 문제를 해결할 수 없었습니다.WPF 캔버스 패널 배경에 색칠 된 그리드 선 그리기

<Window x:Class="GridTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="700" Width="1000"> 

<ScrollViewer HorizontalScrollBarVisibility="Visible"> 
    <Canvas Width="10000" Height="10000"> 
     <Canvas.Background> 
      <DrawingBrush Stretch="None" TileMode="Tile" 
          Viewport="0,0 100,100" ViewportUnits="Absolute"> 
       <DrawingBrush.Drawing> 
        <GeometryDrawing> 
         <GeometryDrawing.Geometry> 
          <GeometryGroup> 
           <LineGeometry StartPoint="0,0" EndPoint="0,100"/> 
           <LineGeometry StartPoint="0,0" EndPoint="100,0"/> 
          </GeometryGroup> 
         </GeometryDrawing.Geometry> 
         <GeometryDrawing.Pen> 
          <Pen Thickness="1" Brush="Red"/> 
         </GeometryDrawing.Pen> 
        </GeometryDrawing> 
       </DrawingBrush.Drawing> 
      </DrawingBrush> 
     </Canvas.Background> 
    </Canvas> 
</ScrollViewer> 

</Window> 

다시 말씀 드리지만 ...이 코드는 단색으로하고 싶습니다. 그러나 나는 또한 다른 색깔의 선을 추가하고 싶다.

답변

6

각은 자신의 배경 펜, 루트 캔버스에 여러 개의 캔버스를 추가 할 수 있습니다

<ScrollViewer HorizontalScrollBarVisibility="Visible"> 
    <Canvas Width="10000" Height="10000"> 
     <Canvas Width="10000" Height="10000"> 
      <Canvas.Background> 
       <DrawingBrush Stretch="None" TileMode="Tile" 
          Viewport="0,0 10,10" ViewportUnits="Absolute"> 
        <DrawingBrush.Drawing> 
         <GeometryDrawing> 
          <GeometryDrawing.Geometry> 
           <GeometryGroup> 
            <LineGeometry StartPoint="0,0" EndPoint="0,10"/> 
            <LineGeometry StartPoint="0,0" EndPoint="10,0"/> 
           </GeometryGroup> 
          </GeometryDrawing.Geometry> 
          <GeometryDrawing.Pen> 
           <Pen Thickness="1" Brush="DarkGray"/> 
          </GeometryDrawing.Pen> 
         </GeometryDrawing> 
        </DrawingBrush.Drawing> 
       </DrawingBrush> 
      </Canvas.Background> 
     </Canvas> 
     <Canvas Width="10000" Height="10000"> 
      <Canvas.Background> 
       <DrawingBrush Stretch="None" TileMode="Tile" 
          Viewport="0,0 50,50" ViewportUnits="Absolute"> 
        <DrawingBrush.Drawing> 
         <GeometryDrawing> 
          <GeometryDrawing.Geometry> 
           <GeometryGroup> 
            <LineGeometry StartPoint="0,0" EndPoint="0,50"/> 
            <LineGeometry StartPoint="0,0" EndPoint="50,0"/> 
           </GeometryGroup> 
          </GeometryDrawing.Geometry> 
          <GeometryDrawing.Pen> 
           <Pen Thickness="1" Brush="Blue"/> 
          </GeometryDrawing.Pen> 
         </GeometryDrawing> 
        </DrawingBrush.Drawing> 
       </DrawingBrush> 
      </Canvas.Background> 
     </Canvas> 
     <Canvas Width="10000" Height="10000"> 
      <Canvas.Background> 
       <DrawingBrush Stretch="None" TileMode="Tile" 
          Viewport="0,0 100,100" ViewportUnits="Absolute"> 
        <DrawingBrush.Drawing> 
         <GeometryDrawing> 
          <GeometryDrawing.Geometry> 
           <GeometryGroup> 
            <LineGeometry StartPoint="0,0" EndPoint="0,100"/> 
            <LineGeometry StartPoint="0,0" EndPoint="100,0"/> 
           </GeometryGroup> 
          </GeometryDrawing.Geometry> 
          <GeometryDrawing.Pen> 
           <Pen Thickness="1" Brush="Red"/> 
          </GeometryDrawing.Pen> 
         </GeometryDrawing> 
        </DrawingBrush.Drawing> 
       </DrawingBrush> 
      </Canvas.Background> 
     </Canvas> 
    </Canvas> 
</ScrollViewer> 

또는 어떤 UIElement에서 브러시를 구성 VisualBrush을 사용할 수 있습니다. 그래서 당신은 내부 RectanglesGrid에서 캔버스 배경을 만들거나 유사한 접근 할 수 :

<Canvas> 
    <Canvas.Background> 
     <VisualBrush> 
      <VisualBrush.Visual> 
       <Grid> 
        <Rectangle Width="10000" Height="10000"> 
         <Rectangle.Fill> 
          <DrawingBrush Stretch="None" TileMode="Tile" 
           Viewport="0,0 10,10" ViewportUnits="Absolute"> 
           <DrawingBrush.Drawing> 
            <GeometryDrawing> 
             <GeometryDrawing.Geometry> 
              <GeometryGroup> 
               <LineGeometry StartPoint="0,0" EndPoint="0,10"/> 
               <LineGeometry StartPoint="0,0" EndPoint="10,0"/> 
              </GeometryGroup> 
             </GeometryDrawing.Geometry> 
             <GeometryDrawing.Pen> 
              <Pen Thickness="1" Brush="DarkGray"/> 
             </GeometryDrawing.Pen> 
            </GeometryDrawing> 
           </DrawingBrush.Drawing> 
          </DrawingBrush> 
         </Rectangle.Fill> 
        </Rectangle> 
        <Rectangle Width="10000" Height="10000"> 
         <Rectangle.Fill> 
          <DrawingBrush Stretch="None" TileMode="Tile" 
           Viewport="0,0 50,50" ViewportUnits="Absolute"> 
           <DrawingBrush.Drawing> 
            <GeometryDrawing> 
             <GeometryDrawing.Geometry> 
              <GeometryGroup> 
               <LineGeometry StartPoint="0,0" EndPoint="0,50"/> 
               <LineGeometry StartPoint="0,0" EndPoint="50,0"/> 
              </GeometryGroup> 
             </GeometryDrawing.Geometry> 
             <GeometryDrawing.Pen> 
              <Pen Thickness="1" Brush="Blue"/> 
             </GeometryDrawing.Pen> 
            </GeometryDrawing> 
           </DrawingBrush.Drawing> 
          </DrawingBrush> 
         </Rectangle.Fill> 
        </Rectangle> 
        <Rectangle Width="10000" Height="10000"> 
         <Rectangle.Fill> 
          <DrawingBrush Stretch="None" TileMode="Tile" 
           Viewport="0,0 100,100" ViewportUnits="Absolute"> 
           <DrawingBrush.Drawing> 
            <GeometryDrawing> 
             <GeometryDrawing.Geometry> 
              <GeometryGroup> 
               <LineGeometry StartPoint="0,0" EndPoint="0,100"/> 
               <LineGeometry StartPoint="0,0" EndPoint="100,0"/> 
              </GeometryGroup> 
             </GeometryDrawing.Geometry> 
             <GeometryDrawing.Pen> 
              <Pen Thickness="1" Brush="Red"/> 
             </GeometryDrawing.Pen> 
            </GeometryDrawing> 
           </DrawingBrush.Drawing> 
          </DrawingBrush> 
         </Rectangle.Fill> 
        </Rectangle> 
       </Grid> 
      </VisualBrush.Visual> 
     </VisualBrush> 
    </Canvas.Background> 
</Canvas> 
+0

감사 McGarnagle !!!!! – user3130331

+0

다시 한번 감사드립니다 ... 나는 첫 번째 옵션을 테스트했으며 챔피언처럼 작동합니다. 제 첫 번째 옵션은 제가 갈 것입니다. – user3130331