0

イベントの処理に問題があります。基本的に、プログラムは画像を生成しますが、イベントは同じです。

 private Image MakeImage(string filename)
 {
     Uri uri = new Uri("ms-appx:///CategoryData/" + filename+".png");
     BitmapImage bitmap = new BitmapImage(uri);
     Image image = new Image()
     {
         Height = 100,
         Width = 100,
         Stretch = Stretch.Uniform,
         MaxHeight = 250,
         MaxWidth  = 250,
         HorizontalAlignment = HorizontalAlignment.Left,
         VerticalAlignment = VerticalAlignment.Top,
         Name = filename+"Img",
         ManipulationMode = ManipulationModes.TranslateX | ManipulationModes.TranslateY,
     };
     image.Source = bitmap;
     image.ManipulationDelta += image_ManipulationDelta;
     return image;
 }

 void image_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
 {
     Image image = sender as Image;
     CompositeTransform ct = image.RenderTransform as CompositeTransform;
     ct.TranslateX += e.Delta.Translation.X;
     ct.TranslateY += e.Delta.Translation.Y;
     //throw new NotImplementedException();
 }

" " で例外が発生しct.TranslateX += e.Delta.Translation.X;ます。オブジェクト参照がオブジェクト インスタンスに設定されていません。

4

1 に答える 1

1

キャストをチェックしてください。CompositeTransformおそらくタイプが間違っているためです。結果として、ct例外nullになります。

編集:例を追加しました。

CompositeTransform ct = image.RenderTransform as CompositeTransform;
if (ct == null) image.RenderTransform = ct = new CompositeTransform();
ct.TranslateX += e.Delta.Translation.X;
ct.TranslateY += e.Delta.Translation.Y;

TranslateTransformさらに、必要なのが画像の翻訳だけである場合は、を使用してみませんか?

于 2012-12-17T02:53:47.267 に答える