IDLgrPlot and Widget event [message #54140] |
Fri, 25 May 2007 08:16  |
Laurens
Messages: 41 Registered: May 2006
|
Member |
|
|
Hi All,
After much irritation from not being able to write a universal class for
drawing every kind of curve, (as usual) David's suggestion to me a few
months ago did the trick;
All measures are normalized to 0->1 so Axis, Curve/Plot and Symbols, all
are scaled to that 0-> scale; the curve draws fine.
Now, I am catching the MOTION event from the mouse cursor; I want to
have something like a crosshair to accentuate the position of the mouse
cursor (see link for example img).
Catching the event and drawing the polylines almost goed well, except
for the fact that I don't seem to be able to position the lines at the
right place. I guess this has to do since the event.x delivers me the
pixel-position on the widget, say 98. But 98 is a bit tough to fit onto
a scale of 0->1.
So the actual question: how do I get from an event.x or event.y to a
position in my normalized plot?
Code I now have:
============================================================ ==
*xAxis->GetProperty, CRange=xrange
*yAxis->GetProperty, CRange=yrange
self.View->GetProperty, VIEWPLANE_RECT = viewplane
position = [0.20, 0.15, 0.925, 0.925]
xs = Normalize(xrange, Position=[position[0], position[2]])
ys = Normalize(yrange, Position=[position[1], position[3]])
; Scale the plot data and axes into 0->1.
*(xLine)->SetProperty, XCoord_Conv=xs
*(yLine)->SetProperty, YCoord_Conv=ys
fraction = 1 ; ??? <-- how to get something useful here...
scaledX = mean( event.x )
scaledY = mean( fraction * event.y )
; Plot lines
*(xLine)->SetProperty, Color=self->Get("Ccrosshair"), Thick=1,
DATA=[[scaledX, yrange[0], 0], [scaledX, yrange[1], 0]]
*(yLine)->SetProperty, Color=self->Get("Ccrosshair"), Thick=1,
DATA=[[xrange[0], scaledY, 0], [xrange[1], scaledY, 0]]
============================================================ ====
Look at the img to get my point:
http://sophorus.mine.nu/idlgrplot_cursorpos.jpg
If someone with a fresh mind has any suggestions: please...
Thanks a bunch..
Laurens
|
|
|