1

このようにタップ/クリックに基づいて画像の位置を設定しようとしています(「contentGrid」はPageの唯一の子であり、画面全体に表示されることに注意してください)

 private void contentGrid_Tapped(object sender, TappedRoutedEventArgs e)
 {
     Uri uri = new Uri("ms-appx:///Images/Test.png");
     BitmapImage bitmap = new BitmapImage(uri);
     Image image = new Image();
     image.Source = bitmap;

     // The .png is a 30px by 30px image
     image.Width = 30;
     image.Height = 30;
     image.Stretch = Stretch.None;

     Point tappedPoint = e.GetPosition(contentGrid);
     TranslateTransform posTransform = new TranslateTransform();
     posTransform.X = tappedPoint.X;
     posTransform.Y = tappedPoint.Y;
     image.RenderTransform = posTransform;
     contentGrid.Children.Add(image);         
 }

その結果、クリックするとページにTest.pngの画像が表示されますが、タップ/クリックした位置には表示されません。ページ幅の半分とページ高さの半分だけ視覚的にオフセットされます。

ここで相対的な位置を理解しようとしています-ユーザーが実際にタップ/クリックしたポイントに画像を変換するための最良の方法は何ですか?

4

2 に答える 2

3

Gridあなたの場合は使いにくいです。の代わりにキャンバスを使用しGridます。

Canvas.SetLeft(image, tappedPoint.X);
Canvas.SetTop(image, tappedPoint.Y);
canvas.Children.Add(image);
于 2012-12-05T15:45:08.387 に答える
3

Margin表示する画像の をマウス ポイントに設定してみてください。

   private void contentGrid_Tapped(object sender, TappedRoutedEventArgs e)
   {
        Uri uri = new Uri("ms-appx:///Images/Test.png");
        BitmapImage bitmap = new BitmapImage(uri);
        Image image = new Image();
        image.Source = bitmap;


        // The .png is a 30px by 30px image
        image.Width = 30;
        image.Height = 30;
        image.Stretch = Stretch.None;

        image.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        image.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        Point tappedPoint = e.GetPosition(contentGrid);
        contentGrid.Children.Add(image);
        image.Margin = new Thickness(tappedPoint.X, tappedPoint.Y, 0, 0);
    }
于 2012-12-02T23:11:59.533 に答える