2011-10-20 12 views
6

Mam silverlight Canvas, który zawiera obraz z rysunkami na nim (wielokątami). Potrzebuję rozwinąć kontrolę, aby powiększyć i przesunąć to płótno w obszarze roboczym (Border w komórce Grid, jak na razie), jak pokazano poniżej. Jaki jest najlepszy sposób na zrobienie tego. Czy są jakieś biblioteki, z których mogę skorzystać?Powiększanie i przesuwanie obrazu na płótnie

Muszę mieć możliwość dodawania rysunków do powiększonego/panoramowanego płótna.

http://i54.tinypic.com/1zbe7pf.png

+0

Chcesz, aby suwak powiększenia faktycznie powiększył płótno zamiast obrazu, aby płótno wypełniło cały obszar roboczy? – Jack

+0

tak. ponieważ oznaczenia na obrazie powinny być na miejscu. – blitzkriegz

+0

To, czy płótno wypełnia cały obszar roboczy, zależy od ustawienia zoomu za pomocą suwaka powiększenia. – blitzkriegz

Odpowiedz

1

Można spróbować tworzenia UserControl, który jest w zasadzie obraz wewnątrz płótnie i wystawiać dwa przekształcić właściwości do kontrolowania powiększanie i przesuwanie. ScaleTransform obsługiwałoby powiększanie, a funkcja TranslateTransform zajmowałaby się panoramowaniem. Możesz utworzyć CompositeTransform z obu z nich i przypisać je jako RenderTransform w obszarze roboczym.

Możesz powiązać suwak zoomu z ScaleTransform i obsługiwać zdarzenia myszy, aby zmienić format TranslateTransform. Dopóki uzyskasz współrzędne myszy w stosunku do samego płótna, które powinno działać (tj. mouseEventArgs.GetPosition(canvas)).

2

Wiele przykładów kodu dostępnych w Internecie. Sprawdź ZoomControl i CodePlex.

+2

+1, po co od nowa wynajdować kierownicę. –

Powiązane problemy