web-dev-qa-db-ja.com

キャンバスに物を描く

Windows Phone用のC#でCanvasに何かを描画するにはどうすればよいですか?

さて、もう少し明確にしましょう。

ユーザーがキャンバス上の386,43で指をタップしたとします。 (キャンバスは768 x 480です)

キャンバスの386,43に赤い点を配置して、アプリケーションが応答できるようにしたいと思います。

私はno Canvasの使用経験があります。

もしこれは1つの質問で答えるには複雑すぎます(おそらくそうです)、お願いします他のウェブサイトへのリンクを教えてくださいキャンバスとデッサンの記事で。

12
JavaAndCSharp

これを行うにはさまざまな方法があります。赤い点の性質に応じて、UserControlにすることができます。基本的なサークルの場合、キャンバスのManipulationStartedイベントを簡単に処理できます。

private void myCanvas_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
{

            Ellipse el = new Ellipse();
            el.Width = 10;
            el.Height = 10;
            el.Fill = new SolidColorBrush(Colors.Red);
            Canvas.SetLeft(el, e.ManipulationOrigin.X);
            Canvas.SetTop(el, e.ManipulationOrigin.Y);
            myCanvas.Children.Add(el);
}
8
keyboardP

私はあなたが別の方法で問題に取り組む必要があると思います。 (そのため、意図的にコードを含めていません)。

Windowsアプリケーション(電話を含む)のフォームとコントロールは、いくつかの理由でいつでも更新できます。タッチアクションに応答してキャンバスに描画すると、次の更新までキャンバスが更新されます。更新が発生すると、キャンバスが自動的に再描画され、空白のキャンバスになります。

最終目標が何であるかはわかりませんが、ユーザーが行ったことを追跡し、その状態をどこかに保存して、キャンバスの再描画時にキャンバスに表示することをお勧めします。これは、すべてのアクションを保存してキャンバスに「再生」するか、単にキャンバスのビューをビットマップとして保存し、更新時にそのビットマップでキャンバスを再読み込みすることで実行できます。しかし、後者の場合、キャンバスを使用することは適切な解決策ではないと思います。

4
Peter Ritchie