0

私の実際のコードでは、1 つのオブジェクトを移動させることができます

private void OnManipulationStarted(object sender, ManipulationStartedEventArgs e)
{
    e.Handled = true;         
}

private void OnManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    e.Handled = true;
    ballTranslate.X += e.DeltaManipulation.Translation.X;
    ballTranslate.Y += e.DeltaManipulation.Translation.Y;
    savx = ballTranslate.X;
    savy = ballTranslate.Y;
}

private void OnManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
{
    e.Handled = true;
}

そして私のxaml:

<Image x:Name="ball"
    Source="/bal.png"
    ManipulationStarted="OnManipulationStarted" 
    ManipulationCompleted="OnManipulationCompleted" 
    ManipulationDelta="OnManipulationDelta" Canvas.Left="212" Canvas.Top="282">

    <Image.RenderTransform>
        <TranslateTransform x:Name="ballTranslate"/>
    </Image.RenderTransform>
</Image>

他の画像(ボール)を追加して、それを動かそうとすると; もう一方も動きます。そして、ボタンのようなものでいくつかのボールを追加したいと思います。(私のゲームの目的は、画面上にオブジェクトを配置することです。私の質問は、同じ能力を持つ別のボールをどのように追加できるかということです。

他の画像を使用した XAML の追加 (ただし、必要な画像の数がわからないため、XAML を介して画像を追加したくありません。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,0,0">
    <Canvas x:Name="CanMap" Margin="10,0,-10,0">
        <Image Grid.RowSpan="2" Source="/textg.png" Stretch="Fill" Height="480" Width="752" Canvas.Left="-24" RenderTransformOrigin="0.499,0.512" CacheMode="BitmapCache" />
        <!-- <Image Name="image1" Stretch="Fill" Source="/bal.png" MouseMove="MouseMoving" Grid.ColumnSpan="4" Canvas.Left="337" Canvas.Top="239"/>-->
        <Image x:Name="ball"    
               Source="/bal.png"
               ManipulationStarted="OnManipulationStarted" 
               ManipulationCompleted="OnManipulationCompleted" 
               ManipulationDelta="OnManipulationDelta" Canvas.Left="447" Canvas.Top="323">

            <Image.RenderTransform>
                <TranslateTransform x:Name="ballTranslate"/>
            </Image.RenderTransform>
        </Image>
        <Image x:Name="ball2"
               Source="/bal.png"
               ManipulationStarted="OnManipulationStarted" 
               ManipulationCompleted="OnManipulationCompleted" 
               ManipulationDelta="OnManipulationDelta" Canvas.Left="120" Canvas.Top="310">

            <Image.RenderTransform>
                <TranslateTransform x:Name="ballTranslate2"/>
            </Image.RenderTransform>
        </Image>
    </Canvas>
</Grid>

画像を追加: (ビットマップは使えません)

void AddImage(string src)
{
    Image image = new Image();

    Uri uri = new Uri(src, UriKind.Relative);
    ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri);
    image.SetValue(Image.SourceProperty, img);
    RenderTransform = new TranslateTransform();
    image.ManipulationDelta += OnManipulationDelta;
    // Add additional handlers here..

    CanMap.Children.Add(image);
}

-->

private void OnManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    e.Handled = true;
    var transform = (sender as UIElement).RenderTransform as TranslateTransform;
    transform.X += e.DeltaManipulation.Translation.X;
    transform.Y += e.DeltaManipulation.Translation.Y;
    savex = transform.X;
    savey = transform.Y;
}
4

1 に答える 1

1

更新された回答:

void AddImage(string src)
{
    BitmapImage bitmap = new BitmapImage();
    bitmap.BeginInit();
    bitmap.UriSource = new Uri(src, UriKind.RelativeOrAbsolute);
    bitmap.EndInit();

    var img = new Image()
    {
        Source = bitmap,
        RenderTransform = new TranslateTransform()
    }

    img.ManipulationDelta += OnManipulationDelta;
    // Add additional handlers here..

    CanMap.Children.Add(img);
}

void OnManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    var transform = (sender as UIElement).RenderTransform as TranslateTransform;
    transform.X += e.DeltaManipulation.Translation.X;
    transform.Y += e.DeltaManipulation.Translation.Y;
 }
于 2013-10-11T08:44:00.757 に答える