1

ScrollViewerWPFプロジェクトでを使用していますが、そのコンテンツに苦労しています。このSVが含まれているウィンドウには他にも多くのUIアイテムがScrollViewerあり、SVゾーンの外、または少なくとも他の要素の背後に表示されないように画像をスクロールさせたいと思います。

これはSVを使用した私のコードです(はい、グリッド内にあります):

<Grid Name="mainGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="200*" />
        <ColumnDefinition Width="802*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="30*" />
        <RowDefinition Height="500*" />
        <RowDefinition Height="199*" />
    </Grid.RowDefinitions>

    <ScrollViewer Grid.Row="1" Grid.ColumnSpan="2" Name="map" Margin="0,0,0,0" PanningMode="Both" HorizontalScrollBarVisibility="Visible" Background="DarkGray" ClipToBounds="True">
        <WindowsFormsHost Name="windowsFormsHost1" Cursor="Cross" HorizontalAlignment="Left" VerticalAlignment="Top" ClipToBounds="True" />
    </ScrollViewer>
</grid>

もう1つの問題は、マウスを置いたまま画像をスクロールしたいということです。そのままでは、マウスがの空の領域にある場合にのみスクロールしScrollViewerます。

これは背後にあるコードの一部です:

public MainWindow()
{
    InitializeComponent();

    //Creation of the map
    Map newMap = new Map();
    newMap.setMapStrategy(new SmallMapStrategy());
    newMap.createMap();

    //Put the map in the PB as an image
    System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
    pictureBox.Width = newMap.grid.Count * 2; pictureBox.Height = newMap.grid.Count * 2;
    newMap.afficher(pictureBox);
    windowsFormsHost1.Width = newMap.grid.Count * 2; windowsFormsHost1.Height = newMap.grid.Count * 2;
    windowsFormsHost1.Child = pictureBox;
}
4

1 に答える 1

1

ScrollableControlを使用して問題を解決しました。これで、私のPictureBoxは、グリッドに含まれるWindowsFormsHostにあるスクロール可能なコントロールにあります。

        System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
        pictureBox.Width = (int)Math.Sqrt((double)game.Map.grid.Count) * 50; pictureBox.Height = (int)Math.Sqrt((double)game.Map.grid.Count) * 50;
        game.Map.afficher(pictureBox);
        System.Windows.Forms.ScrollableControl sc = new System.Windows.Forms.ScrollableControl();
        sc.Controls.Add(pictureBox);
        sc.AutoScroll = true;
        windowsFormsHost1.Child = sc;
于 2013-01-04T20:41:54.697 に答える