2011-09-08 3 views
1

화살표가 그려진 XAML이 있는데이 XAML 코드를 변환하지 못했습니다. 위쪽 화살표는 XAML이고 아래쪽은 코드입니다.코드에서 그리기 문제

코드에서 내가 잘못했는지 누군가가 알 수 있습니까? 나는 XAML과 똑같이 보이기를 바란다.

enter image description here

XAML :

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Rectangle> 
     <Rectangle.Fill> 
      <DrawingBrush Stretch="Uniform"> 
       <DrawingBrush.Drawing> 
        <DrawingGroup> 
         <DrawingGroup.Children> 
          <GeometryDrawing Geometry="F1 M 3.64665,5.62366C 5.73362,3.09485 8.89196,1.48303 12.4268,1.48303C 16.1132,1.48303 19.3901,3.23596 21.4694,5.95398"> 
           <GeometryDrawing.Pen> 
            <Pen Thickness="2.4" LineJoin="Round" Brush="Black"/> 
           </GeometryDrawing.Pen> 
          </GeometryDrawing> 
          <GeometryDrawing Geometry="F1 M 21.4719,1.21204L 21.4719,5.96594L 16.7181,5.96594"> 
           <GeometryDrawing.Pen> 
            <Pen Thickness="2.4" MiterLimit="2.75" Brush="Black"/> 
           </GeometryDrawing.Pen> 
          </GeometryDrawing> 
          <GeometryDrawing Brush="Black" Geometry="F1 M 21.4593,0.00012207C 22.122,0.00012207 22.6593,0.537231 22.6593,1.20007C 22.6593,1.86267 22.122,2.40002 21.4593,2.40002C 20.7966,2.40002 20.2593,1.86267 20.2593,1.20007C 20.2593,0.537231 20.7966,0.00012207 21.4593,0.00012207 Z "/> 
          <GeometryDrawing Brush="Black" Geometry="F1 M 16.7121,4.76526C 17.3749,4.76526 17.9121,5.30261 17.9121,5.96545C 17.9121,6.62805 17.3749,7.16516 16.7121,7.16516C 16.0494,7.16516 15.5121,6.62805 15.5121,5.96545C 15.5121,5.30261 16.0494,4.76526 16.7121,4.76526 Z "/> 
         </DrawingGroup.Children> 
        </DrawingGroup> 
       </DrawingBrush.Drawing> 
      </DrawingBrush> 
     </Rectangle.Fill> 
    </Rectangle> 
    <Image x:Name="img" Grid.Row="1"/> 
</Grid> 

코드 뒤에 : 당신은 (단지 1, 2 사람과 펜) 만 3, 4 형상을 드로잉 브러시를 지정 XAML에서

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 
     img.Source = _createInnerIcon(); 
    } 

    private DrawingImage _createInnerIcon() 
    { 
     SolidColorBrush lineBrush = Brushes.Black; 

     var dGroup = new DrawingGroup(); 
     using (DrawingContext dc = dGroup.Open()) 
     { 
       dc.DrawGeometry(lineBrush, new Pen(lineBrush, 2.4) { LineJoin = PenLineJoin.Round }, Geometry.Parse("F1 M 3.64665,5.62366C 5.73362,3.09485 8.89196,1.48303 12.4268,1.48303C 16.1132,1.48303 19.3901,3.23596 21.4694,5.95398")); 
       dc.DrawGeometry(lineBrush, new Pen(lineBrush, 2.4) { MiterLimit = 2.75 }, Geometry.Parse("F1 M 21.4719,1.21204L 21.4719,5.96594L 16.7181,5.96594")); 
       dc.DrawGeometry(lineBrush, new Pen(lineBrush, 1), Geometry.Parse("F1 M 21.4593,0.00012207C 22.122,0.00012207 22.6593,0.537231 22.6593,1.20007C 22.6593,1.86267 22.122,2.40002 21.4593,2.40002C 20.7966,2.40002 20.2593,1.86267 20.2593,1.20007C 20.2593,0.537231 20.7966,0.00012207 21.4593,0.00012207 Z ")); 
       dc.DrawGeometry(lineBrush, new Pen(lineBrush, 1), Geometry.Parse("F1 M 16.7121,4.76526C 17.3749,4.76526 17.9121,5.30261 17.9121,5.96545C 17.9121,6.62805 17.3749,7.16516 16.7121,7.16516C 16.0494,7.16516 15.5121,6.62805 15.5121,5.96545C 15.5121,5.30261 16.0494,4.76526 16.7121,4.76526 Z ")); 
     } 

     return new DrawingImage(dGroup); 
    } 

} 
+0

'그런데이 Brushes.Black'입니다. –

+0

@ H.B - 네, 알아요, 어리석은 .. .. 저것 ​​주셔서 감사합니다! 괜찮 으면 질문에서 수정했습니다. – Erez

답변

1

따라서 코드 스 니펫은 실제로 동일하지 않습니다.

트릭을 할해야 블록을 사용하여 내부에 그 4 개 라인의 작은 수정은 :

dc.DrawGeometry(null, new Pen(lineBrush, 2.4) { LineJoin = PenLineJoin.Round }, Geometry.Parse("F1 M 3.64665,5.62366C 5.73362,3.09485 8.89196,1.48303 12.4268,1.48303C 16.1132,1.48303 19.3901,3.23596 21.4694,5.95398")); 
dc.DrawGeometry(null, new Pen(lineBrush, 2.4) { MiterLimit = 2.75 }, Geometry.Parse("F1 M 21.4719,1.21204L 21.4719,5.96594L 16.7181,5.96594")); 
dc.DrawGeometry(lineBrush, null, Geometry.Parse("F1 M 21.4593,0.00012207C 22.122,0.00012207 22.6593,0.537231 22.6593,1.20007C 22.6593,1.86267 22.122,2.40002 21.4593,2.40002C 20.7966,2.40002 20.2593,1.86267 20.2593,1.20007C 20.2593,0.537231 20.7966,0.00012207 21.4593,0.00012207 Z ")); 
dc.DrawGeometry(lineBrush, null, Geometry.Parse("F1 M 16.7121,4.76526C 17.3749,4.76526 17.9121,5.30261 17.9121,5.96545C 17.9121,6.62805 17.3749,7.16516 16.7121,7.16516C 16.0494,7.16516 15.5121,6.62805 15.5121,5.96545C 15.5121,5.30261 16.0494,4.76526 16.7121,4.76526 Z ")); 
+0

고마워요 !!!!!!!!!!! – Erez