CanvasとRulerを使用したWPFアプリケーションがあります。次に、Canvas OnMouseMove(MouseEventArgs e)をルーラーに渡して、マウスの動きをそのスケールに反映させる必要があります。両方のコントロールは初期化中に独立して作成され、お互いを認識しません。キャンバス上のマウスの位置をルーラーに転送するにはどうすればよいですか?
2 に答える
0
MouseEventArgsには、任意のIInputElementをパラメーターとして渡すことができるGetPositionメソッドがあり、指定された要素に対するマウスポインターの位置を返します。Rulerをパラメーター値として渡します。
于 2012-10-07T18:09:45.887 に答える
0
私は解決策を見つけましたが、まだ疑問があります。私には少し複雑に思えます:
「親」コントロールとしてのCanvasには、次のコードが含まれています。
public Point MousePosition {get {return(Point)GetValue(MousePositionProperty); } set {SetValue(MousePositionProperty、value); }}
public static readonly DependencyProperty MousePositionProperty = DependencyProperty.Register("MousePosition", typeof(Point), typeof(DesignerCanvas), new UIPropertyMetadata(point)); protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); MousePosition = e.GetPosition(this);
}
ルーラーには次のコードが含まれています。
public Point Position {get {return(Point)GetValue(PositionProperty); } set {SetValue(PositionProperty、value); }}
public static readonly DependencyProperty PositionProperty = DependencyProperty.Register("Position", typeof(Point), typeof(HorizontalRuler), new UIPropertyMetadata(defaultMousePoint, new PropertyChangedCallback(PositionPropertyChangedCallback))); private static void PositionPropertyChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e) { HorizontalRuler horizontalRuler = (HorizontalRuler)sender; horizontalRuler.InvalidateVisual(); }
于 2012-10-08T08:42:48.340 に答える