私は、ユーザーが何かを描画してデータベースに保存するプロジェクトを進めています。キャンバスの原点の位置を変更する方法
基本的に、ユーザーはキャンバスを描画します。キャンバスは画面サイズの5倍大きく、キャンバスはまだ画面の中央にあります(または画面はキャンバスの中央にあります)。
キャンバスのサイズを柔軟にする(キャンバスのサイズを将来変更したい)ために、キャンバスの中心を原点、つまり(0、0 )がキャンバスの中心にあります。だからマウスがどこかをクリックすると、私が得るポイントはキャンバスの中心に基づいて測定されます。
たぶん、あなたは言うでしょう:
Canvas.RenderTransformOrigin = (.5,.5)
。しかし、私は回転中心を求めていないので、それは解決策ではありません。Canvas.RenderTransform = TranslateTransform (Canvas.Width/2.0, Canvas.Height/2.0)
。しかし、キャンバス上のすべてのオブジェクトを中央に移動するだけです。
また、オフセットCanvas.Width/2.0, Canvas.Height/2.0
でMouseClickポイントを変換してから、レンダリング時に戻してみてください。これを行うことはできますが、あまりにも多くの努力を払う必要があります。これは、実行する必要のある操作が多いため、前後に翻訳する必要があるたびに実行されます。
こんにちはコリン、お返事ありがとうございます。私はあなたが提案しているのと同様のアプローチを考えました。つまり、別のキャンバス 'public PeterCanvas:Canvas'を作成し、' OffsetLeft'、 'OffsetTop'(あなたのもの)のような新しいプロパティを追加します。しかし、マウスクリックイベントの座標はTopLeftコーナーに基づいて測定されます(恐らく 'e.GetPosition(HelpCanvas)' 'HelpCanvas'は元のキャンバスの中心にある0サイズのキャンバスです) 。また、RenderTransformビヘイビア(キャンバス上のオブジェクトはこのプロパティが可能です)など多くの作業があります... –
@PeterLee簡単なオプションを探していることはわかっていますが、1つもありません。私は恐れている! – ColinE