Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>OK. I understood it better now and found the solution. It is all about the center point of the composite transform (as I initially guessed). For center of the ellipse, I had to feed the center of rectangle. However the coordinate needed to be given relative to the ellipse. In my case ellipse is at the right upper corner of the rectangle so below is what I have given as composite transform center.</p> <pre><code>Point centerE = previousTransformE.TransformPoint(new Point(-rectMy.Width / 2 + ellipseMy.Width / 2, rectMy.Height / 2 + ellipseMy.Height / 2)); </code></pre> <p>For rectangle, the center point for composite transform was:</p> <pre><code>Point center = previousTransform.TransformPoint(new Point(rectMy.Width / 2, rectMy.Height / 2)); </code></pre> <p>Stackoverflow does not allow me to post an image to better visualize the things. Sorry!</p> <p>The whole code:</p> <pre><code>previousTransform.Matrix = transformGroup.Value; previousTransformE.Matrix = transformGroupE.Value; Point center = previousTransform.TransformPoint(new Point(rectMy.Width / 2, rectMy.Height / 2)); compositeTransform.CenterX = center.X; compositeTransform.CenterY = center.Y; compositeTransform.Rotation = e.Delta.Rotation; compositeTransform.TranslateX = e.Delta.Translation.X; compositeTransform.TranslateY = e.Delta.Translation.Y; Point centerE = previousTransformE.TransformPoint(new Point(-rectMy.Width / 2 + ellipseMy.Width / 2, rectMy.Height / 2 + ellipseMy.Height / 2)); compositeTransformE.CenterX = centerE.X; compositeTransformE.CenterY = centerE.Y; compositeTransformE.Rotation = e.Delta.Rotation; compositeTransformE.TranslateX = e.Delta.Translation.X; compositeTransformE.TranslateY = e.Delta.Translation.Y; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload