2009-07-27 3 views
12

У меня есть куча точек данных, которые я хотел бы привязать в двух направлениях к точкам на холсте.Как изменить x, y начало холста в нижнем левом углу и перевернуть координаты y?

Точки предполагают, что большие значения y отражаются в направлении вверх, как и большинство математических графиков.

Как изменить положение x, y холста в левом нижнем углу и отменить его интерпретацию координаты y?

(Я хотел бы остаться в XAML)

+0

Привет, я знаю, что это старый, но вы его работали в двух направлениях? Я пытаюсь выбрать точку (точки), нажав на нее –

ответ

22
<Canvas> 
    <Canvas.LayoutTransform> 
     <ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" /> 
    </Canvas.LayoutTransform> 
</Canvas> 
+3

Благодарим за это, но не являются ScaleX, CentreX и CenterY излишними? Использование ScaleY = "- 1" похоже на трюк. Кроме того, другие остерегаются, что это также перевернет любой текст вверх дном. –

+3

да другие свойства избыточны, но это соглашение (из того, что я видел), чтобы включить эти свойства. И да, это перевернет текст, но если вы просто рисуете точки, все должно быть в порядке. если вам нужно нарисовать текст, вы можете нарисовать его на 2-м прозрачном холсте, который находится поверх графика Canvas – kenwarner

+0

@qntmfred, любой пример реализации реализации текста. потому что точечная система также повлияет на размещение текста – RobinAtTech

0

Если вы используете привязки данных вы можете использовать TypeConvertor, но для этого вы должны выйти за пределы XAML, и вы должны знать размер холста заранее.

+0

Привет, что вы подразумеваете под привязкой данных? Я пытаюсь выбрать точки, нажимая на них. TypeConverter имеет какое-либо отношение к этому? –

0

Я бы, возможно, создал пользовательскую панель вместо Canvas и придавал ей приложенные свойства, которые имеют смысл для ваших нужд. Вот пример реализации пользовательской панели:

http://blog.boschin.it/articles/silverlight-radialpanel.aspx

Что-то вроде Canvas очень проста, так как вы не должны делать в меру и организовать переопределение.

Вы также можете унаследовать от Canvas и переопределить ArrangeOverride, я не пробовал это, но он может работать.

+0

Билл, вы не говорите, что не так с использованием Canvas? –

+0

Ну, я не понимаю, как вы можете это сделать с помощью прямого холста, если вы масштабируете его -1 в Y, все будет перевернуто. Я думаю, вы могли бы масштабировать все элементы -1. –

0

Я пробовал метод ScaleTransform широко: он не работает. Он сдвигает только одну из двух координат, и никогда. Это, однако, работает так, как рекламируется:

<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0" 
    HorizontalAlignment="Center" VerticalAlignment="Center" > 
Смежные вопросы