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

У меня есть куча точек данных, которые я хотел бы привязать к точке на двухсторонней привязке к точкам на холсте.

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

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

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0"
    HorizontalAlignment="Center" VerticalAlignment="Center" >