1

私はWindowsPhoneDev。を初めて使用しますが、次のことを行うつもりです。

  1. 画像Aでキャンバスの背景を設定します。
  2. 画像Aの上に別の画像Bを追加します。

私が達成したこと

を使用するImageBrushと、キャンバスの背景画像を設定できますが、画像Aの上に画像Bを配置しようとすると問題が発生しましたCanvas.Children.Add(imageB)。アプリを実行すると、画像Aが表示され、画像Bが上に表示されません。

Null参照例外はなく、イメージAとBの両方がロードされていると確信しています。

私の質問は、ImageBを表示するようにキャンバスを設定し、ImageBを操作イベントに応答させて、後でタッチして移動できるようにする方法です。

これが私の関連コードです:

ImageBrush brush = new ImageBrush();
Image imageB = new Image();
imageB.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));

//...here I set the ImageBrush as imageA
canvas.Background = brush; // Can display imageA 

canvas.Children.Add(imageB);
imageB.ManipulationDelta += ImageB_ManipulationDelta;
imageB.ManipulationCompleted += ImageB_ManipulationCompleted;

画像Aの上に画像Bを配置することを主張する理由は、画像Bを使用してManipulationDeltaイベントに応答できるように画像BにEventHandlerを設定することを計画しているためです。

私はそれについていくつかの調査をしました:

Windowsphoneオタク:画像の操作

WindowsPhone7のUIのドラッグとフリック

しかし、運はありません。

助けてくれてありがとう :-)

4

3 に答える 3

0

Imageコードは、呼び出されたものを作成したように見えますimageBが、設定することはありません。この線

Image.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));

奇妙に思えますね

imageB.Source = new BitmapImage(new Uri("/Assets/imageB.png", UriKind.Relative));
于 2012-11-05T11:58:55.447 に答える
0

問題がどこにあるかを見つけたと思います:

Canvas.SetLeftandを設定しなかったので、likeCanvas.SetTopを使用する前に 2 行追加する必要があります。canvas.Children.Add()

...
Canvas.SetLeft(imageB, point.X);
Canvas.SetTop(imageB, point.Y);
canvas.Children.Add(imageB);
...

とヴィオラ、問題は解決しました。

于 2012-11-05T14:44:07.600 に答える
0

私はあなたと同じ問題を抱えていました。多くの検索の後、最終的に解決策を見つけました。このコードは期待どおりに機能します。

BitmapImage img = new BitmapImage(new Uri("Assets/imageB.png", UriKind.Relative));
img.CreateOptions = BitmapCreateOptions.None;
Image imageB = new Image();
imageB.Source = img;
img.ImageOpened += (s, e) =>
{
    canvas.Children.Add(imageB);
};
于 2014-04-23T15:09:00.600 に答える