1
Expression Blendでは、マウスホイールをスクロールすると、画面上の要素がズームイン/ズームアウトされ、マウスの位置に焦点を当てます。Expression Blendでのズームの実装
自分のプロジェクトで同じズームを実装しようとしていますが、ズーム後、マウスを動かしてから再びズームすると問題が発生します。
これまではScaleTransformのマウス座標をcenterX、ScaleTransformのcenterYを使用してScaleTransformでRenderTransformを使用しています。
Expression Blendでどのように行ったのか、誰でも知っていますか?
これは私がこれまで何をやったかである:
private void ScrollCanvasMouseWheel(object sender, MouseWheelEventArgs e)
{
double zoomAmnt = e.Delta > 0 ? 0.2 : -0.2;
_scaleTransformAmount += zoomAmnt;
if (_scaleTransformAmount < 0.5)
_scaleTransformAmount = 0.5;
Point position = e.GetPosition(ScrollCanvas);
var scaleTransform = ScrollCanvas.RenderTransform as ScaleTransform;
if (scaleTransform == null) throw new ArgumentNullException("scaleTransform");
scaleTransform.ScaleX = _scaleTransformAmount;
scaleTransform.ScaleY = _scaleTransformAmount;
scaleTransform.CenterX = position.X;
scaleTransform.CenterY = position.Y;
}
これは私が試したことが想像していたものとは根本的に異なる方法ですが、私はそれを試してみましょう! '_scalingAnimation'フィールドはどのような型ですか? – Siyfion
私はそれを 'DoubleAnimation'としていて、それはうまくいくとは心配しないでください。全体的な効果については、私が望むものに近いが、それほどではない。私はあなたが本当に半分の方法でズームインできないことを知っています。次に、ズーム "フォーカス"を別のエリアに非常に効果的に切り替えます。それは正しい方向に少しだけ動きますが、しばらくするとフォーカスポイントが画面から消えます。 – Siyfion
本当ですか?それは私に起こったことはありませんでした。多分、変換が適用されているコントロールとは異なるコントロールからポイントを得るかもしれませんか? –