|
Масштабирование canvas
|
|||
---|---|---|---|
#18+
Всем привет. Мне необходимо масштабировать канвас. Масштабирование срабатывает на событии прокрутки ролика мыши на канвасе. Как можно сделать чтобы центрование было именно к курсору мыши на канвасе при помощи с помощью ScrollViewer? вот xaml. <Grid> <ScrollViewer Name="scrollViewer" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Background="LightGray" Grid.Row="1"> <Canvas Height="400" Grid.Row="1" Background="AliceBlue" Name="cnv" HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch" PreviewMouseWheel="canvas1_PreviewMouseWheel" /> </ScrollViewer > </Grid> код : private ScaleTransform st = new ScaleTransform(); public MainWindow() { InitializeComponent(); cnv.LayoutTransform = st; } private void canvas1_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { coordinate_X = (e.GetPosition(cnv).X ); if (e.Delta > 0) { st.ScaleX *= 1.1; } if (e.Delta < 0) { st.ScaleX /= 1.1; } st.ScaleY = st.ScaleX; } ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 13:22 |
|
Масштабирование canvas
|
|||
---|---|---|---|
#18+
Вообще, мне кажется здесь больше подойдёт RenderTransform, ибо LayoutTransform тяжеловесный, подвисать будет при прокрутке (масштабировании). Или по каким-то причинам подходит только LayoutTransform? Да и какой здесь смысл в ScrollViewer? RenderTransform будет выполняться от центра. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 13:27 |
|
Масштабирование canvas
|
|||
---|---|---|---|
#18+
Ilya81, когда я использую RenderTransform а точнее CenterX = e.GetPosition(cnv).X и CenterY = e.GetPosition(cnv).Y то часть моего канваса слева визуально не отображается. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 13:58 |
|
Масштабирование canvas
|
|||
---|---|---|---|
#18+
Трансформация будет выполняться из точки UIElement.RenderTransformOrigin (тип Point) где 0,0 - верхний левый угол и 1,1 - правый нижний. Для маштабирования попробуйте Viewbox ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 13:59 |
|
Масштабирование canvas
|
|||
---|---|---|---|
#18+
Roman Mejtes,Ilya81, Можете скинуть пример ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 15:16 |
|
Масштабирование canvas
|
|||
---|---|---|---|
#18+
Ilya81, LayoutTransform при масштабировании объекта не может центровать к нужной точке. RenderTransform центрует к нужной точке , но есть проблема. При масштабировании канваса фактически его ширина и высота не меняется , но визуально меняются размеры! ScrollViewer при этом не увеличивает свою ширину и поэтому часть канваса не отображается и с помощью скрола пролистать не возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2015, 12:03 |
|
|
start [/forum/topic.php?fid=21&fpage=19&tid=1440960]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 9ms |
total: | 127ms |
0 / 0 |