c# - Scale child back in WPF -
i have grid scaled/zoomed scaletransform slider. @ runtime many uielements added grid.
i want show tooltips, not scaled! how should that?
for example: grid has scalex , scaley 2, set new scaletransform(0.5, 0.5), didn't help. seems similar value 0.740.. why? grid's layouttransform.inverse set scale values 0.5.
xaml:
<scrollviewer horizontalscrollbarvisibility="auto" verticalscrollbarvisibility="auto" height="auto" width="auto" name="graphscrollviewer" scrollchanged="graphscrollviewer_scrollchanged"> <grid margin="0,0,0,0" name="graphgrid" width="auto" height="auto" scrollviewer.isdeferredscrollingenabled="true" mouseleftbuttondown="graphgrid_mouseleftbuttondown" mouseleftbuttonup="graphgrid_mouseleftbuttonup" mousemove="graphgrid_mousemove"> <grid.layouttransform> <scaletransform scalex="{binding elementname=sldzoom, path=value}" scaley="{binding elementname=sldzoom, path=value}" /> </grid.layouttransform> </grid> </scrollviewer> <slider minimum="0.1" maximum="20" value="1" x:name="sldzoom" panel.zindex="10" orientation="horizontal" verticalalignment="bottom" horizontalalignment="right" margin="0,0,20,20" height="23" width="100" valuechanged="sldzoom_valuechanged"/> code-behind: (method of rectangle (mouseenter event) dynamically added grid)
private void rect_mouseenter(object sender, mouseeventargs e) { recttooltip = new textblock(); recttooltip.horizontalalignment = horizontalalignment.left; recttooltip.verticalalignment = verticalalignment.top; recttooltip.textalignment = textalignment.center; recttooltip.height = this.headertwoheight + 1; recttooltip.text = " " + (rectstasks[(sender rectangle)]).info + " "; recttooltip.background = this.tooltipbackground; recttooltip.foreground = this.tooltipfontcolor; recttooltipborder = new border(); recttooltipborder.child = recttooltip; recttooltipborder.borderthickness = new thickness(this.tooltipborderthickness); recttooltipborder.borderbrush = this.tooltipbordercolor; recttooltipborder.margin = new thickness(e.getposition((graphgrid)).x + 10, e.getposition((graphgrid)).y + 10, 0, 0); recttooltipborder.verticalalignment = system.windows.verticalalignment.top; recttooltipborder.horizontalalignment = system.windows.horizontalalignment.left; graphgrid.children.add(recttooltipborder); recttooltipborder.layouttransform = recttooltip.layouttransform = new scaletransform(????); grid.setzindex(recttooltip, 20); grid.setzindex(recttooltipborder, 20); }
you need assign inverse transform child element, child stay intact.
recttooltipborder.layouttransform = graphgrid.layouttransform.inverse transform;
Comments
Post a Comment