Конвертировать xaml в C # код - PullRequest
0 голосов
/ 10 декабря 2011

Я новичок в использовании пути в wpf, и я не знаю, как преобразовать сегмент кода xaml в код C #. Может ли кто-нибудь помочь мне с этим? Я цитирую следующий код xaml, а затем пытаюсь его преобразовать. Чего не хватает в коде C #? Еще одна вещь, которую я хотел бы спросить - достаточно ли сетки, чтобы в окне появился путь.

<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<PathGeometry>
  <PathGeometry.Figures>
    <PathFigureCollection>
      <PathFigure StartPoint="10,100">
        <PathFigure.Segments>
          <PathSegmentCollection>
            <QuadraticBezierSegment Point1="200,200" Point2="300,100" />
          </PathSegmentCollection>
        </PathFigure.Segments>
      </PathFigure>
    </PathFigureCollection>
  </PathGeometry.Figures>
</PathGeometry>

Мой код C #:

Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1
PathGeometry myPathGeometry = new PathGeometry();
myPathGeometry.Figures = new PathFigureCollection();

PathFigure myPathFigure = new PathFigure();
myPathFigure.StartPoint = new Point(10, 100);
myPathFigure.Segments = new PathSegmentCollection();
QuadraticBezierSegment theSegment = new QuadraticBezierSegment();
theSegment.Point1 = new Point(200, 200);
theSegment.Point2 = new Point(100, 300);
myPathFigure.Segments.Add(theSegment);
myPathGeometry.Figures.Add(myPathFigure);

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Вы должны добавить следующую строку в конце,

myPath.Data = myPathGeometry;

И вы должны добавить x: Name к вашему <Grid> как <Grid x:Name='myGrid'>

И добавьте еще одну строку,

myGrid.Children.Add(myPath);
0 голосов
/ 10 декабря 2011

Ваш код на C # может сильно походить на разметку WPF. Просто добавьте путь к элементу управления, в котором вы хотите его отобразить.

var myPath = new Path
{
    Stroke = Brushes.Black,
    StrokeThickness = 1.0,
    Data = new PathGeometry
    {
        Figures = new PathFigureCollection
        {
            new PathFigure
            {
                StartPoint = new Point(10, 100),
                Segments = new PathSegmentCollection
                {
                    new QuadraticBezierSegment
                    {
                        Point1 = new Point(200, 200),
                        Point2 = new Point(300, 100),
                    },
                },
            },
        },
    },
};
myGrid.Children.Add(myPath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...