C #: добавление путей к холсту - PullRequest
1 голос
/ 19 июня 2011

У меня есть полотно шириной 200 пикселей и высотой 100 пикселей.Затем у меня есть 4 квадрата, которые расположены по типу шахматной доски:

 -- --
|  |  |
 -- --
|  |  |
 -- --

Координата пикселя нижнего левого квадрата равна 300 300;так что это вне поля зрения холста.У меня есть 2 вопроса:

1) Как лучше всего добавить эти 4 квадрата на холст?Вот как я это делал.

Path p = new Path();
p.Fill = Blue;
p.Data = Square[0];

canvas.Children.Add(p);

2) Как изменить диапазон просмотра холста, чтобы он "двигался" туда, где на самом деле нарисованы его дочерние элементы?

Iне могу заставить это работать, но я могу получить два вида рабочих результатов.Во-первых, я просто рисую квадраты и добавляю преобразование, которое очень мало масштабирует их.Это приводит к тому, что формы можно просматривать на холсте, но они не отцентрированы и не масштабированы.

Во втором случае они добавляются друг на друга, но по центру.Это происходит, когда я устанавливаю значение Stretch для пути.

В основном я хочу добавить набор объектов Geometry на холст и сделать так, чтобы представление холста перемещалось, чтобы сфокусироваться на ограничивающей рамке его детей.Как мне сделать это программно в C #.Это достаточно легко сделать в XAML, если вы жестко закодируете фигуры, но в моем случае я хочу знать, как автоматически масштабировать и масштабировать для любой заданной формы и размера.

1 Ответ

0 голосов
/ 19 июня 2011

Ваш метод добавления фигур в коде для меня выглядит совершенно нормально.Чтобы переместить Canvas в «фокус» на определенную область, это не то, что он делает автоматически для вас.Однако вы можете добавить TranslateTransform для перемещения детей:

canvas.RenderTransform = new TranslateTransform () { X = 100, Y=-100 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...