相关疑难解决方法(0)

使用 Wpf 中的 ScrollView 和 ViewBox 缩放到鼠标点

我在 wpf 中绘制了一些路径到屏幕上。使用的坐标非常小,因此它们已被制作为用视图框填充屏幕。我现在正在尝试实现平移和缩放功能。我希望能够缩放到鼠标相对于 ui 的任何位置(即缩放的屏幕中心等于鼠标坐标)。当前的结果是缩放时屏幕的中心不能反映 ui 上的确切鼠标位置。

如果你想看看发生了什么......这是我当前的解决方案文件

或者

继承人一些代码:

查看 Xaml

<Grid Name="MasterGrid" DataContext="{StaticResource mainWindowViewModel}">

    <ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Name="VisualisationScroller">
        <Viewbox Name="VisualisationBox" Stretch="Fill" Loaded="VisualisationBox_Loaded">

            <ItemsControl Name="CustomDrawingElement" ItemsSource="{Binding Trajectories}" Width="{Binding VisualisationWidth}" Height="{Binding VisualisationHeight}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate DataType="data:VisualisedTrajectory">
                        <Path Data = "{Binding PathData}" Stroke="Red" StrokeThickness="0.001" Fill="Transparent" />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>

                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Canvas
                            Background="DarkGray"
                            IsItemsHost="True">
                        </Canvas>

                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>

                <ItemsControl.RenderTransform>

                    <TransformGroup>
                        <ScaleTransform ScaleX="1" ScaleY="1" />
                        <TranslateTransform />
                    </TransformGroup>

                </ItemsControl.RenderTransform>

            </ItemsControl>

        </Viewbox>
    </ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)

查看模型

public class MainWindowViewModel : BaseViewModel
{

    public MainWindowViewModel()
    { …
Run Code Online (Sandbox Code Playgroud)

wpf mouse scrollviewer viewbox zooming

4
推荐指数
1
解决办法
7907
查看次数

标签 统计

mouse ×1

scrollviewer ×1

viewbox ×1

wpf ×1

zooming ×1