WPG DragDeltaEventArgs.HorizontalChange

  • Thread starter Thread starter Viv P
  • Start date Start date
V

Viv P

Hi,

I have a Canvas contained within another Canvas. I'm using an adorner with
Thumbs to resize the inner canvas. In the relevant Thumbs DragDelta() I have
the usual:
adornedElement.Width = adornedElement.Width + args.HorizontalChange;
and all works as expected.
Now I want to Zoom the containing Canvas. If I use a ScaleTransform as the
RenderTransform again all is fine. But if I apply this to the LayoutTransform
instead (which is my preference) then the DeltaEventArgs.HorizontalChange
returns weird values.

As a rough example assume I am (fairly steadily) increasing the width of the
inner canvas then tracing the successive HorizontalChange values shows
something like: -8,10,-7,16,-15,19,-19,27,-28,35,-38,46,-50 etc. (These are
obviously actually double values - I've just rounded them here for
readability).

So the absolute values are continually increasing and are alternatively
negative/positive.
What causes this behaviour? What can prevent it?

Thx,
Viv
 
I've worked out that if I need to adjust the HorizontalChange value based on
the current LayoutTransform before applying it.

But I don't really understand why this is required with a LayoutTransform
and not with a RenderTransform. A clear explanation of what is going on would
be appreciated.
Thx,
Viv
 
Back
Top