From: Jonathan S. <jon...@al...> - 2003-12-22 16:38:50
|
I have a Graphic object that I am plotting data on. While the cursor is on this object I have a cross-hairs cursor. What I would like to do is extend lines from the cursor position to the edges of the graph (the perimeter) but not have them overwrite what is plotted there and as I move the cursor around the lines move accordingly. It would be the same effect as using a selection tool in any common paint program. I know how to track the current mouse position and i know the values for the boundaries of the graph; I just don't know how to produce the effect I am wanting. Has anyone ever accomplished this? Does anyone know HOW to do it? Any help would be greatly appreciated. Jonathan ======================== Jonathan Southwick jon...@al... Technical & Network Services Allegheny College Meadville, PA 16335 (814) 332-2755 |
From: Johan L. <jo...@ba...> - 2003-12-22 17:35:46
|
At 17:37 2003-12-22, Jonathan Southwick wrote: >I have a Graphic object that I am plotting data on. While the cursor is= =20 >on this object I have a How do you do this? Do you paint the entire area in the Graphic control's= =20 _Paint event? /J -------- ------ ---- --- -- -- -- - - - - - Johan Lindstr=F6m Sourcerer @ Boss Casinos jo...@ba... Latest bookmark: "Lexa.McKenna.Edu OpenSSH for Windows" http://lexa.mckenna.edu/sshwindows/ dmoz: ...uters/Security/Products_and_Tools/Cryptography/ 24 |
From: Jonathan S. <jon...@al...> - 2003-12-22 18:06:41
|
What I do is plot (x,y) the data points that I am graphing and connecting= =20 the points so that I have a line graph. Since I am plotting two series o= f=20 data I have two different colored graphs. Jonathan At 12/22/2003 06:34 PM, you wrote: >At 17:37 2003-12-22, Jonathan Southwick wrote: >>I have a Graphic object that I am plotting data on. While the cursor i= s=20 >>on this object I have a > >How do you do this? Do you paint the entire area in the Graphic control'= s=20 >_Paint event? > > >/J > >-------- ------ ---- --- -- -- -- - - - - - >Johan Lindstr=F6m Sourcerer @ Boss Casinos jo...@ba... > >Latest bookmark: "Lexa.McKenna.Edu OpenSSH for Windows" >http://lexa.mckenna.edu/sshwindows/ >dmoz: ...uters/Security/Products_and_Tools/Cryptography/ 24 > > > >------------------------------------------------------- >This SF.net email is sponsored by: IBM Linux Tutorials. >Become an expert in LINUX or just sharpen your skills. Sign up for IBM'= s >Free Linux Tutorials. Learn everything from the bash shell to sys admin. >Click now! http://ads.osdn.com/?ad_id78&alloc_id371&op=CCk >_______________________________________________ >Perl-Win32-GUI-Users mailing list >Per...@li... >https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Jonathan Southwick jon...@al... Technical & Network Services Allegheny College Meadville, PA 16335 (814) 332-2755 |
From: Johan L. <jo...@ba...> - 2003-12-28 17:17:51
|
At 17:37 2003-12-22, Jonathan Southwick wrote: >I have a Graphic object that I am plotting data on. While the cursor is= =20 >on this object I have a cross-hairs cursor. What I would like to do is=20 >extend lines from the cursor position to the edges of the graph (the=20 >perimeter) but not have them overwrite what is plotted there and as I mo= ve=20 >the cursor around the lines move accordingly. -snip >Has anyone ever accomplished this? Does anyone know HOW to do it? Any=20 >help would be greatly appreciated. This is one way. Consider it a proof-of-concept rather than best-practice= =20 given the load of globals. Basically, the _Paint event handler is used to always plot first the mous= e=20 lines and then the actual graph. This happens when the the Graphic contro= l=20 is invalidated, which can be triggered by three things; either Windows=20 itself notices the need for it, or the graph changes, or the mouse moves. (This method decouples the cause of the event from the action to be=20 performed when it happens, which is a Good Thing) The #### comments explain the important concepts. #!/usr/local/bin/perl -w use strict; use Win32::GUI; my $wWinPlot =3D 400; my $hWinPlot =3D 250; my ($xMouse, $yMouse) =3D (100, 100); my $xBar =3D 100; my $winPlot =3D winCreate(); sub winCreate { my $winPlot =3D Win32::GUI::Window->new( -left =3D> 100, -top =3D> 100, -width =3D> $wWinPlot, -height =3D> $hWinPlot, -name =3D> "winPlot", -text =3D> "Plot test", -minheight =3D> 10, -minwidth =3D> 10, ); my $grCanvas =3D Win32::GUI::Graphic->new($winPlot, -left =3D> 0, -top =3D> 0, -width =3D> $wWinPlot, -height =3D> $hWinPlot, -name =3D> "grCanvas", -interactive =3D> 1, ); my $tim =3D $winPlot->AddTimer("timTimer", 100); $winPlot->Show(); return($winPlot); } #### Will be called when the window needs to be painted, #### caused either by Windows, or the InvalidateRect of the entire window sub grCanvas_Paint { my $win =3D $winPlot; my($dcDev) =3D @_; return(0) if(!$dcDev); $dcDev->TextColor([0, 0, 0]); #Black #The cross-hair $dcDev->Rectangle($yMouse, 0, $yMouse + 1, $hWinPlot); $dcDev->Rectangle(0, $xMouse, $wWinPlot, $xMouse + 1); #The bar $dcDev->Rectangle(50, 0, 120, $xBar); #### Tell Windows we're satisfied with the way the area looks li= ke $dcDev->Validate(); return(1); } #### Trigger on the mouse move sub grCanvas_MouseMove { my $win =3D $winPlot; my ($dummy, @aPos) =3D @_; ($yMouse, $xMouse) =3D @aPos; #### Tell Windows the window needs to be repainted, #### will call the _Paint event handler #### The 1 wipes the area before repainting it, #### changing it to 0 will leave trails $win->InvalidateRect(1); return(1); } my $timerCount =3D 0; sub timTimer_Timer { my $win =3D $winPlot; $timerCount +=3D .1; $xBar =3D (int(cos($timerCount) * 50)) + 70; #### Tell Windows the window needs to be repainted, #### will call the _Paint event handler #### The 1 wipes the area before repainting it, #### but since we may know exactly what needs to be repainted #### when $xBar changed, that may not be necessary $win->InvalidateRect(1); return(1); } Win32::GUI::Dialog(); __END__ -------- ------ ---- --- -- -- -- - - - - - Johan Lindstr=F6m Sourcerer @ Boss Casinos jo...@ba... Latest bookmark: "Assembly Language Windows Applications" http://grc.com/smgassembly.htm dmoz (1 of 3): /Computers/Programming/Languages/Assembly/ 66 |