You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
(24) |
Dec
(19) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(22) |
Feb
(5) |
Mar
(10) |
Apr
(12) |
May
(6) |
Jun
(3) |
Jul
(6) |
Aug
(7) |
Sep
(1) |
Oct
(3) |
Nov
(4) |
Dec
(1) |
2008 |
Jan
|
Feb
(4) |
Mar
(6) |
Apr
(10) |
May
(2) |
Jun
(4) |
Jul
(15) |
Aug
(11) |
Sep
(3) |
Oct
|
Nov
(9) |
Dec
(11) |
2009 |
Jan
(6) |
Feb
(9) |
Mar
(24) |
Apr
(4) |
May
(7) |
Jun
(1) |
Jul
|
Aug
|
Sep
(3) |
Oct
(1) |
Nov
(1) |
Dec
(10) |
2010 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(8) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
(6) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(1) |
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: SourceForge.net <no...@so...> - 2007-04-30 09:04:13
|
Feature Requests item #1709964, was opened at 2007-04-30 02:04 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1709964&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: non trading days in TradingDateTimeAxis Initial Comment: TradingDateTimeAxis is actually removing only saturdays and sundays. I'd like non trading days (apart form weekends) to be removed as I get trend lines errors. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1709964&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-27 15:48:03
|
Feature Requests item #1708553, was opened at 2007-04-27 10:00 Message generated for change (Comment added) made by anmar You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Priority: 5 Private: No Submitted By: fxh (hillion) Assigned to: Jamie McQuay (jamcquay) Summary: nplot.dll & visual studio Initial Comment: Hi, Here is a stupid question from a newbie : how to make nplot available in visual studio ? Installation is not clearly mentioned on the web site and in the readme.txt ... or I am just looking no at the right place. I added PlotSurface2D objects linking nplot.dll with Visual Studio "Choose Toolbox Items" window. But then in I cannot do "Dim lp As NPlot.LinePlot = New NPlot.LinePlot" and even "Imports Nplot.Windows" I surely missed a stupid thing but what ? Thanks for your help because I am eager to use nplot ! Francois ---------------------------------------------------------------------- >Comment By: Angel Marin (anmar) Date: 2007-04-27 17:48 Message: Logged In: YES user_id=627967 Originator: NO There is also option 4 :) http://nplot.sourceforge.net/nightly/ ---------------------------------------------------------------------- Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 17:46 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, You have three options. 1. You can get the latest source from the repository, if you don't know how to do this take a look at http://sourceforge.net/svn/?group_id=161868 2. You can install MSBEE (see VisualStudio2005_ReadMe.txt in the source tree) 3. You can make the following changes in the project files (open them in a text editor) file--> NPlot.csproj Change: <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1'" /> to <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1' and Exists('$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets')" /> file --> NPlotDemo.csproj change: <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1'" /> to: <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1' and Exists('$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets')" /> I would suggest option 1 to get the lastest code (this configuration has been fixed in the latest code). Option 3 is basically doing manually what has been changed in the latest source. Jamie ---------------------------------------------------------------------- Comment By: fxh (hillion) Date: 2007-04-27 17:25 Message: Logged In: YES user_id=1779834 Originator: YES Hi Jamie, It started with this demo ; but VS complains that "MSBee\MSBuildExtras.FX1_1.CSharp.targets" is not found - of course since MSBee is not installed. I am working with NS.Net Framework 2.0 but also have version 1.1 installed. Do I really need MSBee ? The 2006.10.15 pdf document for O'Reilly book only says to link nplot.dll. This is done but this is probably not enough ?? Francois ---------------------------------------------------------------------- Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 17:13 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, There is a demo project that is with the sourcecode to demonstrate how to use the various graphing types. Look for the "demo/csharp" folder in the nPlot tree. Jamie ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-27 15:46:02
|
Feature Requests item #1708553, was opened at 2007-04-27 04:00 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed Priority: 5 Private: No Submitted By: fxh (hillion) Assigned to: Jamie McQuay (jamcquay) Summary: nplot.dll & visual studio Initial Comment: Hi, Here is a stupid question from a newbie : how to make nplot available in visual studio ? Installation is not clearly mentioned on the web site and in the readme.txt ... or I am just looking no at the right place. I added PlotSurface2D objects linking nplot.dll with Visual Studio "Choose Toolbox Items" window. But then in I cannot do "Dim lp As NPlot.LinePlot = New NPlot.LinePlot" and even "Imports Nplot.Windows" I surely missed a stupid thing but what ? Thanks for your help because I am eager to use nplot ! Francois ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 11:46 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, You have three options. 1. You can get the latest source from the repository, if you don't know how to do this take a look at http://sourceforge.net/svn/?group_id=161868 2. You can install MSBEE (see VisualStudio2005_ReadMe.txt in the source tree) 3. You can make the following changes in the project files (open them in a text editor) file--> NPlot.csproj Change: <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1'" /> to <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1' and Exists('$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets')" /> file --> NPlotDemo.csproj change: <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1'" /> to: <Import Project="$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets" Condition="'$(SharpDevelopBinPath)'=='' AND '$(TargetFrameworkVersion)'=='v1.1' and Exists('$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets')" /> I would suggest option 1 to get the lastest code (this configuration has been fixed in the latest code). Option 3 is basically doing manually what has been changed in the latest source. Jamie ---------------------------------------------------------------------- Comment By: fxh (hillion) Date: 2007-04-27 11:25 Message: Logged In: YES user_id=1779834 Originator: YES Hi Jamie, It started with this demo ; but VS complains that "MSBee\MSBuildExtras.FX1_1.CSharp.targets" is not found - of course since MSBee is not installed. I am working with NS.Net Framework 2.0 but also have version 1.1 installed. Do I really need MSBee ? The 2006.10.15 pdf document for O'Reilly book only says to link nplot.dll. This is done but this is probably not enough ?? Francois ---------------------------------------------------------------------- Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 11:13 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, There is a demo project that is with the sourcecode to demonstrate how to use the various graphing types. Look for the "demo/csharp" folder in the nPlot tree. Jamie ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-27 15:40:37
|
Feature Requests item #1708553, was opened at 2007-04-27 08:00 Message generated for change (Settings changed) made by hillion You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Open Priority: 5 Private: No Submitted By: fxh (hillion) Assigned to: Jamie McQuay (jamcquay) Summary: nplot.dll & visual studio Initial Comment: Hi, Here is a stupid question from a newbie : how to make nplot available in visual studio ? Installation is not clearly mentioned on the web site and in the readme.txt ... or I am just looking no at the right place. I added PlotSurface2D objects linking nplot.dll with Visual Studio "Choose Toolbox Items" window. But then in I cannot do "Dim lp As NPlot.LinePlot = New NPlot.LinePlot" and even "Imports Nplot.Windows" I surely missed a stupid thing but what ? Thanks for your help because I am eager to use nplot ! Francois ---------------------------------------------------------------------- Comment By: fxh (hillion) Date: 2007-04-27 15:25 Message: Logged In: YES user_id=1779834 Originator: YES Hi Jamie, It started with this demo ; but VS complains that "MSBee\MSBuildExtras.FX1_1.CSharp.targets" is not found - of course since MSBee is not installed. I am working with NS.Net Framework 2.0 but also have version 1.1 installed. Do I really need MSBee ? The 2006.10.15 pdf document for O'Reilly book only says to link nplot.dll. This is done but this is probably not enough ?? Francois ---------------------------------------------------------------------- Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 15:13 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, There is a demo project that is with the sourcecode to demonstrate how to use the various graphing types. Look for the "demo/csharp" folder in the nPlot tree. Jamie ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-27 15:25:44
|
Feature Requests item #1708553, was opened at 2007-04-27 08:00 Message generated for change (Comment added) made by hillion You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Closed Priority: 5 Private: No Submitted By: fxh (hillion) Assigned to: Jamie McQuay (jamcquay) Summary: nplot.dll & visual studio Initial Comment: Hi, Here is a stupid question from a newbie : how to make nplot available in visual studio ? Installation is not clearly mentioned on the web site and in the readme.txt ... or I am just looking no at the right place. I added PlotSurface2D objects linking nplot.dll with Visual Studio "Choose Toolbox Items" window. But then in I cannot do "Dim lp As NPlot.LinePlot = New NPlot.LinePlot" and even "Imports Nplot.Windows" I surely missed a stupid thing but what ? Thanks for your help because I am eager to use nplot ! Francois ---------------------------------------------------------------------- >Comment By: fxh (hillion) Date: 2007-04-27 15:25 Message: Logged In: YES user_id=1779834 Originator: YES Hi Jamie, It started with this demo ; but VS complains that "MSBee\MSBuildExtras.FX1_1.CSharp.targets" is not found - of course since MSBee is not installed. I am working with NS.Net Framework 2.0 but also have version 1.1 installed. Do I really need MSBee ? The 2006.10.15 pdf document for O'Reilly book only says to link nplot.dll. This is done but this is probably not enough ?? Francois ---------------------------------------------------------------------- Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 15:13 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, There is a demo project that is with the sourcecode to demonstrate how to use the various graphing types. Look for the "demo/csharp" folder in the nPlot tree. Jamie ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-27 15:13:45
|
Feature Requests item #1708553, was opened at 2007-04-27 04:00 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed Priority: 5 Private: No Submitted By: fxh (hillion) >Assigned to: Jamie McQuay (jamcquay) Summary: nplot.dll & visual studio Initial Comment: Hi, Here is a stupid question from a newbie : how to make nplot available in visual studio ? Installation is not clearly mentioned on the web site and in the readme.txt ... or I am just looking no at the right place. I added PlotSurface2D objects linking nplot.dll with Visual Studio "Choose Toolbox Items" window. But then in I cannot do "Dim lp As NPlot.LinePlot = New NPlot.LinePlot" and even "Imports Nplot.Windows" I surely missed a stupid thing but what ? Thanks for your help because I am eager to use nplot ! Francois ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-04-27 11:13 Message: Logged In: YES user_id=613279 Originator: NO Hi Francois, There is a demo project that is with the sourcecode to demonstrate how to use the various graphing types. Look for the "demo/csharp" folder in the nPlot tree. Jamie ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-27 08:00:51
|
Feature Requests item #1708553, was opened at 2007-04-27 08:00 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Priority: 5 Private: No Submitted By: fxh (hillion) Assigned to: Nobody/Anonymous (nobody) Summary: nplot.dll & visual studio Initial Comment: Hi, Here is a stupid question from a newbie : how to make nplot available in visual studio ? Installation is not clearly mentioned on the web site and in the readme.txt ... or I am just looking no at the right place. I added PlotSurface2D objects linking nplot.dll with Visual Studio "Choose Toolbox Items" window. But then in I cannot do "Dim lp As NPlot.LinePlot = New NPlot.LinePlot" and even "Imports Nplot.Windows" I surely missed a stupid thing but what ? Thanks for your help because I am eager to use nplot ! Francois ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1708553&group_id=161868 |
From: Dave C. <dav...@gm...> - 2007-04-27 02:58:36
|
> Say, I'd like to get the crosshairs style of mouse interaction that I > use to select sub areas on the price chart to show as vertical lines on the lower > graphs. I didn't see any way to receive the mouse overs during crosshair > movement though. > > Also, I'd like to double duty the mouse with key commands. Right now I > use a rubberband style selection but I'd like to hold down the control key and be > able to pan up and down on the same graph with the mouse. |
From: SourceForge.net <no...@so...> - 2007-04-09 18:11:26
|
Feature Requests item #1694968, was opened at 2007-04-05 09:30 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1694968&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: None >Status: Closed Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: realtime support Initial Comment: Hello, There is a news on the project page: "24 August 2005 Dominic Thuillier has made some very cool modifications to NPlot that allow adding new data points to LinePlot's without refreshing the rest of the plot. This is functionality that he needed but couldn't find in any of the commercial charting controls. I'm considering this a "polishing" addition and I'm including it before the 1.0 release. I'm about halfway through adding it in. My changes are basically a generalised version of Dominic's implementation. As part of this I'm thinking about improved support for data binding (over the whole library). I'm also further progressed on the modifications mentioned in the last post. These are the three improvements to look forward to in the next release." Have these modifications dropped out in current release? At the moment the chart is not changing when I add data points to the binded source. To solve this you can make a new data assignment of the data source for each new data point. In this case the library performance(WinForms) is very slow. I'm thinking of data sources with 20000 data points and multiple updates per second. ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-04-09 14:11 Message: Logged In: YES user_id=613279 Originator: NO >Have these modifications dropped out in current release? At the moment the >chart is not changing when I add data points to the binded source. Yes, this work did not make it into the current version. I am currently working on optimization work. Regards, Jamie ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1694968&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-04-05 13:30:04
|
Feature Requests item #1694968, was opened at 2007-04-05 06:30 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1694968&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: None Status: Open Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: realtime support Initial Comment: Hello, There is a news on the project page: "24 August 2005 Dominic Thuillier has made some very cool modifications to NPlot that allow adding new data points to LinePlot's without refreshing the rest of the plot. This is functionality that he needed but couldn't find in any of the commercial charting controls. I'm considering this a "polishing" addition and I'm including it before the 1.0 release. I'm about halfway through adding it in. My changes are basically a generalised version of Dominic's implementation. As part of this I'm thinking about improved support for data binding (over the whole library). I'm also further progressed on the modifications mentioned in the last post. These are the three improvements to look forward to in the next release." Have these modifications dropped out in current release? At the moment the chart is not changing when I add data points to the binded source. To solve this you can make a new data assignment of the data source for each new data point. In this case the library performance(WinForms) is very slow. I'm thinking of data sources with 20000 data points and multiple updates per second. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821571&aid=1694968&group_id=161868 |
From: Jamie M. <ja...@sc...> - 2007-04-03 13:36:36
|
Hi Micheal, This might accomplish what you are looking for: ShowSecondYAxis(false); "Shows/hides the labeling of the second axis" Jamie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Jamie McQuay www.scimatic.com -----Original Message----- From: Michael Banzon [mailto:mi...@ab...]=20 Sent: April 3, 2007 7:40 AM To: npl...@li... Subject: [Nplot-devel] Ticks and labels Hi, Is there a way, to get NPlot to display axis labels while not showing tick labels?? The HideTickText property seems to be hiding the axis label as well... :-( --=20 Michael Banzon Developer Mobile: +45 3124 2455 Mail: mi...@ab... Web: http://www.abc-tool.com/ intellitory ApS Njalsgade 88, 2. sal DK-2300 K=F8benhavn S Denmark -------------------------------------------------------------------------= Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share = your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV _______________________________________________ Nplot-devel mailing list Npl...@li... https://lists.sourceforge.net/lists/listinfo/nplot-devel |
From: Michael B. <mi...@ab...> - 2007-04-03 11:40:24
|
Hi, Is there a way, to get NPlot to display axis labels while not showing tick labels?? The HideTickText property seems to be hiding the axis label as well... :-( --=20 Michael Banzon Developer Mobile: +45 3124 2455 Mail: mi...@ab... Web: http://www.abc-tool.com/ intellitory ApS Njalsgade 88, 2. sal DK-2300 K=F8benhavn S Denmark |
From: SourceForge.net <no...@so...> - 2007-03-30 20:59:27
|
Bugs item #1610746, was opened at 2006-12-07 07:09 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1610746&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: Display DataPoints on Labels Initial Comment: Can i display datapoints(database values) in labels when a vertical guide line is moved along the graph with reference to TextItem class or is there any alternative way to do this. In the text item class to display text: PointD pd=new PointD(x,y); TextItem ti=new TextItem(pd,"Welcome"); ti.TextColor=Color.Red; ps_.Add(ti); (using the above code not able to display anything on the graph) I am using NPlot-0.9.10.0 email address: bsk...@ya... Thanks, Varma ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-03-30 16:59 Message: Logged In: YES user_id=613279 Originator: NO Have you tried refreshing the plotsurface after adding the point label? i.e. ps_.Refresh(); If this does not work please email me your code and I'll take a look. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1610746&group_id=161868 |
From: <jam...@us...> - 2007-03-30 19:12:06
|
Revision: 29 http://svn.sourceforge.net/nplot/?rev=29&view=rev Author: jamcquay Date: 2007-03-30 12:12:03 -0700 (Fri, 30 Mar 2007) Log Message: ----------- Fixed whitespace and other inconsistencies in the NPlot Source Modified Paths: -------------- trunk/src/AdapterUtils.cs trunk/src/ArrowItem.cs trunk/src/AssemblyInfo.cs trunk/src/AxesConstraint.cs trunk/src/Axis.cs trunk/src/BarPlot.cs trunk/src/BasePlot.cs trunk/src/BaseSequencePlot.cs trunk/src/Bitmap.PlotSurface2D.cs trunk/src/CandlePlot.cs trunk/src/DateTimeAxis.cs trunk/src/FilledRegion.cs trunk/src/Grid.cs trunk/src/HistogramPlot.cs trunk/src/HorizontalLine.cs trunk/src/IDrawable.cs trunk/src/IGradient.cs trunk/src/IPlot.cs trunk/src/IPlotSurface2D.cs trunk/src/ISequencePlot.cs trunk/src/ISurface.cs trunk/src/ITransform2D.cs trunk/src/ImagePlot.cs trunk/src/LabelAxis.cs trunk/src/LabelPointPlot.cs trunk/src/Legend.cs trunk/src/LegendBase.cs trunk/src/LinePlot.cs trunk/src/LinearAxis.cs trunk/src/LinearGradient.cs trunk/src/LogAxis.cs trunk/src/Marker.cs trunk/src/MarkerItem.cs trunk/src/NPlotException.cs trunk/src/PageAlignedPhysicalAxis.cs trunk/src/PhysicalAxis.cs trunk/src/PiAxis.cs trunk/src/PlotSurface2D.cs trunk/src/PointD.cs trunk/src/PointPlot.cs trunk/src/RectangleBrushes.cs trunk/src/SequenceAdapter.cs trunk/src/StartStep.cs trunk/src/StepGradient.cs trunk/src/StepPlot.cs trunk/src/TextItem.cs trunk/src/TradingDateTimeAxis.cs trunk/src/Transform2D.cs trunk/src/Utils.cs trunk/src/VerticalLine.cs trunk/src/Web.Design.PlotSurface2D.cs trunk/src/Web.PlotSurface2D.cs trunk/src/Windows.PlotSurface2D.cs Modified: trunk/src/AdapterUtils.cs =================================================================== --- trunk/src/AdapterUtils.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/AdapterUtils.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -156,7 +156,6 @@ { return new DateTimeAxis(min, max); } - else { return new LinearAxis(min, max); @@ -219,7 +218,6 @@ abscissaData_.Start, abscissaData_.Start + (double)(ordinateData_.Count - 1) * abscissaData_.Step); } - else { return new LinearAxis(0.0, 1.0); @@ -233,7 +231,6 @@ /// </summary> public class AxisSuggester_Auto : IAxisSuggester { - IList ordinateData_; /// <summary> @@ -254,9 +251,7 @@ if (ordinateData_!=null && ordinateData_.Count>0) { return new LinearAxis(0, ordinateData_.Count - 1); - } - else { return new LinearAxis(0.0, 1.0); @@ -291,7 +286,6 @@ { return new LinearAxis(0, ordinateData_.Count - 1); } - else { return new LinearAxis(0.0, 1.0); @@ -333,7 +327,6 @@ { return new DateTimeAxis(min, max); } - else { return new LinearAxis(min, max); @@ -379,7 +372,6 @@ { return new DateTimeAxis(min, max); } - else { return new LinearAxis(min, max); @@ -508,7 +500,6 @@ return dataView_.Count; } } - } #endregion @@ -717,7 +708,6 @@ /// <remarks>Note: Does not implement IDataGetter... Currently this class is not used.</remarks> public class DataGetter_MultiRows { - DataRowCollection rows_; string abscissaName_; int abscissaColumnNumber_; @@ -733,8 +723,10 @@ abscissaName_ = omitThisColumn; abscissaColumnNumber_ = rows_[0].Table.Columns.IndexOf( omitThisColumn ); - if (abscissaColumnNumber_ < 0) - throw new NPlotException( "invalid column name" ); + if (abscissaColumnNumber_ < 0) + { + throw new NPlotException("invalid column name"); + } } /// <summary> @@ -756,10 +748,14 @@ /// <returns>the required data point.</returns> public double PointAt( int index, int seriesIndex ) { - if (seriesIndex < abscissaColumnNumber_) - return Utils.ToDouble( rows_[index][seriesIndex] ); - else - return Utils.ToDouble( rows_[index][seriesIndex+1] ); + if (seriesIndex < abscissaColumnNumber_) + { + return Utils.ToDouble(rows_[index][seriesIndex]); + } + else + { + return Utils.ToDouble(rows_[index][seriesIndex + 1]); + } } } Modified: trunk/src/ArrowItem.cs =================================================================== --- trunk/src/ArrowItem.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/ArrowItem.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -210,10 +210,14 @@ public void Draw( System.Drawing.Graphics g, PhysicalAxis xAxis, PhysicalAxis yAxis ) { if (this.To.X > xAxis.Axis.WorldMax || this.To.X < xAxis.Axis.WorldMin) + { return; + } if (this.To.Y > yAxis.Axis.WorldMax || this.To.Y < yAxis.Axis.WorldMin) + { return; + } double angle = this.angle_; @@ -320,7 +324,6 @@ { offsetFromMiddle = new PointF( halfSize.Width, -dist ); } - break; case 3: @@ -333,7 +336,6 @@ { offsetFromMiddle = new PointF( -dist, -halfSize.Height ); } - break; default: Modified: trunk/src/AssemblyInfo.cs =================================================================== --- trunk/src/AssemblyInfo.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/AssemblyInfo.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -38,7 +38,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("NPlot project")] [assembly: AssemblyProduct("NPlot")] -[assembly: AssemblyCopyright("Copyright (C) 2003-2006 Matt Howlett and others")] +[assembly: AssemblyCopyright("Copyright (C) 2003-2007 Matt Howlett and others")] [assembly: AssemblyTrademark("This program is under The BSD license")] [assembly: AssemblyCulture("")] [assembly: AssemblyVersion("0.9.10.1")] Modified: trunk/src/AxesConstraint.cs =================================================================== --- trunk/src/AxesConstraint.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/AxesConstraint.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -215,7 +215,6 @@ /// </summary> public class AxisPosition : AxesConstraint { - private object xAxisPosition_; private object yAxisPosition_; private int position_; @@ -439,7 +438,6 @@ pXAxis2.PhysicalMax = new Point( pXAxis2.PhysicalMax.X, pXAxis2.PhysicalMax.Y+changeTop ); } - else { Modified: trunk/src/Axis.cs =================================================================== --- trunk/src/Axis.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/Axis.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -562,7 +562,6 @@ /// </summary> protected static void DoClone( Axis b, Axis a ) { - // value items a.autoScaleText_ = b.autoScaleText_; a.autoScaleTicks_ = b.autoScaleTicks_; @@ -602,7 +601,6 @@ a.FontScale = b.FontScale; a.TickScale = b.TickScale; - } @@ -824,19 +822,26 @@ // Force clipping at bounding box largeClip times that of real bounding box // anyway. This is effectively at infinity. const double largeClip = 100.0; - if (prop > largeClip && clip) - prop = largeClip; + if (prop > largeClip && clip) + { + prop = largeClip; + } - if (prop < -largeClip && clip) - prop = -largeClip; + if (prop < -largeClip && clip) + { + prop = -largeClip; + } if (range == 0) { - if (coord >= WorldMin) - prop = largeClip; - - if (coord < WorldMin) - prop = -largeClip; + if (coord >= WorldMin) + { + prop = largeClip; + } + else + { + prop = -largeClip; + } } // calculate the physical coordinate. @@ -1059,8 +1064,10 @@ PointF tickEnd = new PointF( tickStart.X + tickVector.X, tickStart.Y + tickVector.Y ); // and draw it! - if (g != null) - g.DrawLine( this.linePen_, (int)tickStart.X, (int)tickStart.Y, (int)tickEnd.X, (int)tickEnd.Y ); + if (g != null) + { + g.DrawLine(this.linePen_, (int)tickStart.X, (int)tickStart.Y, (int)tickEnd.X, (int)tickEnd.Y); + } // note: casting to int for tick positions was necessary to ensure ticks drawn where we wanted // them. Not sure of the reason. @@ -1191,7 +1198,6 @@ } else { - float bx1 = (textCenterX - textSize.Width/2.0f); float by1 = (textCenterY - textSize.Height/2.0f); float bx2 = textSize.Width; @@ -1220,7 +1226,6 @@ labelOffset = new Point( (int)textCenterX, (int)textCenterY ); } } - } @@ -1249,7 +1254,6 @@ if (!Hidden) { - // (1) Draw the axis line. g.DrawLine( this.linePen_, physicalMin.X, physicalMin.Y, physicalMax.X, physicalMax.Y ); @@ -1267,12 +1271,15 @@ } // (4) merge bounds and return. - if (labelBounds != null) - bounds = Rectangle.Union( bounds, (Rectangle)labelBounds ); + if (labelBounds != null) + { + bounds = Rectangle.Union(bounds, (Rectangle)labelBounds); + } - if (tickBounds != null) - bounds = Rectangle.Union( bounds, (Rectangle)tickBounds ); - + if (tickBounds != null) + { + bounds = Rectangle.Union(bounds, (Rectangle)tickBounds); + } } boundingBox = bounds; @@ -1391,8 +1398,10 @@ ArrayList largeTickPositions, ref ArrayList smallTickPositions ) { - if (smallTickPositions == null) - smallTickPositions = new ArrayList(); + if (smallTickPositions == null) + { + smallTickPositions = new ArrayList(); + } } @@ -1454,7 +1463,6 @@ { return fontScale_; } - set { fontScale_ = value; @@ -1484,11 +1492,15 @@ private void UpdateScale() { - if (labelFont_ != null) - this.labelFontScaled_ = Utils.ScaleFont( labelFont_, FontScale ); - - if (tickTextFont_ != null) - this.tickTextFontScaled_ = Utils.ScaleFont( tickTextFont_, FontScale ); + if (labelFont_ != null) + { + this.labelFontScaled_ = Utils.ScaleFont(labelFont_, FontScale); + } + + if (tickTextFont_ != null) + { + this.tickTextFontScaled_ = Utils.ScaleFont(tickTextFont_, FontScale); + } } Modified: trunk/src/BarPlot.cs =================================================================== --- trunk/src/BarPlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/BarPlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -130,7 +130,6 @@ g.DrawRectangle( borderPen_, r ); } } - } /// <summary> @@ -151,8 +150,6 @@ } - - /// <summary> /// Returns a y-axis that is suitable for drawing this plot. /// </summary> @@ -185,6 +182,7 @@ g.DrawRectangle( borderPen_, newRectangle ); } + /// <summary> /// The pen used to draw the plot /// </summary> @@ -238,7 +236,6 @@ { rectangleBrush_ = value; } - } private IRectangleBrush rectangleBrush_ = new RectangleBrushes.Solid( Color.LightGray ); @@ -271,8 +268,5 @@ { sb.Append( "Write data not implemented yet for BarPlot\r\n" ); } - - } - } Modified: trunk/src/BasePlot.cs =================================================================== --- trunk/src/BasePlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/BasePlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -110,8 +110,5 @@ } } private string dataMember_ = null; - - - } } Modified: trunk/src/BaseSequencePlot.cs =================================================================== --- trunk/src/BaseSequencePlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/BaseSequencePlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -93,6 +93,5 @@ sb.Append( "\r\n" ); data_.WriteData( sb, region, onlyInRegion ); } - } } Modified: trunk/src/Bitmap.PlotSurface2D.cs =================================================================== --- trunk/src/Bitmap.PlotSurface2D.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/Bitmap.PlotSurface2D.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -34,505 +34,503 @@ using System.Drawing.Drawing2D; using System.Collections; -namespace NPlot +namespace NPlot.Bitmap { - - namespace Bitmap + /// <summary> + /// Wrapper around NPlot.PlotSurface2D that provides extra functionality + /// specific to drawing to Bitmaps. + /// </summary> + public class PlotSurface2D: IPlotSurface2D { /// <summary> - /// Wrapper around NPlot.PlotSurface2D that provides extra functionality - /// specific to drawing to Bitmaps. + /// Constructor. /// </summary> - public class PlotSurface2D: IPlotSurface2D + /// <param name="width">width of the bitmap.</param> + /// <param name="height">height of the bitmap.</param> + public PlotSurface2D( int width, int height ) { + b_ = new System.Drawing.Bitmap( width, height ); + ps_ = new NPlot.PlotSurface2D(); + } - /// <summary> - /// Constructor. - /// </summary> - /// <param name="width">width of the bitmap.</param> - /// <param name="height">height of the bitmap.</param> - public PlotSurface2D( int width, int height ) - { - b_ = new System.Drawing.Bitmap( width, height ); - ps_ = new NPlot.PlotSurface2D(); - } - /// <summary> - /// Constructor. - /// </summary> - /// <param name="b">The Bitmap where the plot is to be rendered.</param> - public PlotSurface2D( System.Drawing.Bitmap b ) - { - b_ = b; - ps_ = new NPlot.PlotSurface2D(); - } + /// <summary> + /// Constructor. + /// </summary> + /// <param name="b">The Bitmap where the plot is to be rendered.</param> + public PlotSurface2D( System.Drawing.Bitmap b ) + { + b_ = b; + ps_ = new NPlot.PlotSurface2D(); + } - /// <summary> - /// Renders the plot. - /// </summary> - /// <param name="g">The graphics surface.</param> - /// <param name="bounds">The rectangle storing the bounds for rendering.</param> - public void Draw( Graphics g, Rectangle bounds ) - { - ps_.Draw( g, bounds ); - } + /// <summary> + /// Renders the plot. + /// </summary> + /// <param name="g">The graphics surface.</param> + /// <param name="bounds">The rectangle storing the bounds for rendering.</param> + public void Draw( Graphics g, Rectangle bounds ) + { + ps_.Draw( g, bounds ); + } - /// <summary> - /// Clears the plot. - /// </summary> - public void Clear() - { - ps_.Clear(); - } + /// <summary> + /// Clears the plot. + /// </summary> + public void Clear() + { + ps_.Clear(); + } - /// <summary> - /// Adds a drawable object to the plot surface. If the object is an IPlot, - /// the PlotSurface2D axes will also be updated. - /// </summary> - /// <param name="p">The IDrawable object to add to the plot surface.</param> - public void Add( IDrawable p ) - { - ps_.Add( p ); - } + /// <summary> + /// Adds a drawable object to the plot surface. If the object is an IPlot, + /// the PlotSurface2D axes will also be updated. + /// </summary> + /// <param name="p">The IDrawable object to add to the plot surface.</param> + public void Add( IDrawable p ) + { + ps_.Add( p ); + } - /// <summary> - /// Adds a drawable object to the plot surface against the specified axes. If - /// the object is an IPlot, the PlotSurface2D axes will also be updated. - /// </summary> - /// <param name="p">the IDrawable object to add to the plot surface</param> - /// <param name="xp">the x-axis to add the plot against.</param> - /// <param name="yp">the y-axis to add the plot against.</param> - public void Add( IDrawable p, NPlot.PlotSurface2D.XAxisPosition xp, NPlot.PlotSurface2D.YAxisPosition yp ) + /// <summary> + /// Adds a drawable object to the plot surface against the specified axes. If + /// the object is an IPlot, the PlotSurface2D axes will also be updated. + /// </summary> + /// <param name="p">the IDrawable object to add to the plot surface</param> + /// <param name="xp">the x-axis to add the plot against.</param> + /// <param name="yp">the y-axis to add the plot against.</param> + public void Add( IDrawable p, NPlot.PlotSurface2D.XAxisPosition xp, NPlot.PlotSurface2D.YAxisPosition yp ) + { + ps_.Add( p, xp, yp ); + } + + + /// <summary> + /// Adds a drawable object to the plot surface. If the object is an IPlot, + /// the PlotSurface2D axes will also be updated. + /// </summary> + /// <param name="p">The IDrawable object to add to the plot surface.</param> + /// <param name="zOrder">The z-ordering when drawing (objects with lower numbers are drawn first)</param> + public void Add( IDrawable p, int zOrder ) + { + ps_.Add( p, zOrder ); + } + + + /// <summary> + /// Adds a drawable object to the plot surface against the specified axes. If + /// the object is an IPlot, the PlotSurface2D axes will also be updated. + /// </summary> + /// <param name="p">the IDrawable object to add to the plot surface</param> + /// <param name="xp">the x-axis to add the plot against.</param> + /// <param name="yp">the y-axis to add the plot against.</param> + /// <param name="zOrder">The z-ordering when drawing (objects with lower numbers are drawn first)</param> + public void Add( IDrawable p, NPlot.PlotSurface2D.XAxisPosition xp, + NPlot.PlotSurface2D.YAxisPosition yp, int zOrder ) + { + ps_.Add( p, xp, yp , zOrder); + } + + + /// <summary> + /// The plot surface title. + /// </summary> + public string Title + { + get { - ps_.Add( p, xp, yp ); + return ps_.Title; } - - /// <summary> - /// Adds a drawable object to the plot surface. If the object is an IPlot, - /// the PlotSurface2D axes will also be updated. - /// </summary> - /// <param name="p">The IDrawable object to add to the plot surface.</param> - /// <param name="zOrder">The z-ordering when drawing (objects with lower numbers are drawn first)</param> - public void Add( IDrawable p, int zOrder ) + set { - ps_.Add( p, zOrder ); + ps_.Title = value; } + } - /// <summary> - /// Adds a drawable object to the plot surface against the specified axes. If - /// the object is an IPlot, the PlotSurface2D axes will also be updated. - /// </summary> - /// <param name="p">the IDrawable object to add to the plot surface</param> - /// <param name="xp">the x-axis to add the plot against.</param> - /// <param name="yp">the y-axis to add the plot against.</param> - /// <param name="zOrder">The z-ordering when drawing (objects with lower numbers are drawn first)</param> - public void Add( IDrawable p, NPlot.PlotSurface2D.XAxisPosition xp, - NPlot.PlotSurface2D.YAxisPosition yp, int zOrder ) + /// <summary> + /// The plot title font. + /// </summary> + public Font TitleFont + { + get { - ps_.Add( p, xp, yp , zOrder); + return ps_.TitleFont; } - - /// <summary> - /// The plot surface title. - /// </summary> - public string Title + set { - get - { - return ps_.Title; - } - set - { - ps_.Title = value; - } + ps_.TitleFont = value; } + } - - /// <summary> - /// The plot title font. - /// </summary> - public Font TitleFont +#if API_1_1 + /// <summary> + /// It has been renamed to <see cref="SurfacePadding" /> and can be used with .NET 1.1 only. + /// </summary> + [ + Obsolete("This property is only maintained in .NET 1.1 profile for compatibility, but it might be removed in the future. Use SurfacePadding instead") + ] + public int Padding + { + get { - get - { - return ps_.TitleFont; - } - set - { - ps_.TitleFont = value; - } + return SurfacePadding; } -#if API_1_1 - /// <summary> - /// It has been renamed to <see cref="SurfacePadding" /> and can be used with .NET 1.1 only. - /// </summary> - [ - Obsolete("This property is only maintained in .NET 1.1 profile for compatibility, but it might be removed in the future. Use SurfacePadding instead") - ] - public int Padding + set { - get - { - return SurfacePadding; - } - set - { - SurfacePadding = value; - } + SurfacePadding = value; } + } #endif - /// <summary> - /// The distance in pixels to leave between of the edge of the bounding rectangle - /// supplied to the Draw method, and the markings that make up the plot. - /// </summary> - public int SurfacePadding + /// <summary> + /// The distance in pixels to leave between of the edge of the bounding rectangle + /// supplied to the Draw method, and the markings that make up the plot. + /// </summary> + public int SurfacePadding + { + get { - get - { - return ps_.SurfacePadding; - } - set - { - ps_.SurfacePadding = value; - } + return ps_.SurfacePadding; } + set + { + ps_.SurfacePadding = value; + } + } - /// <summary> - /// The bottom abscissa axis. - /// </summary> - public Axis XAxis1 + /// <summary> + /// The bottom abscissa axis. + /// </summary> + public Axis XAxis1 + { + get { - get - { - return ps_.XAxis1; - } - set - { - ps_.XAxis1 = value; - } + return ps_.XAxis1; } + set + { + ps_.XAxis1 = value; + } + } - /// <summary> - /// The left ordinate axis. - /// </summary> - public Axis YAxis1 + /// <summary> + /// The left ordinate axis. + /// </summary> + public Axis YAxis1 + { + get { - get - { - return ps_.YAxis1; - } - set - { - ps_.YAxis1 = value; - } + return ps_.YAxis1; } + set + { + ps_.YAxis1 = value; + } + } - /// <summary> - /// The top abscissa axis. - /// </summary> - public Axis XAxis2 + /// <summary> + /// The top abscissa axis. + /// </summary> + public Axis XAxis2 + { + get { - get - { - return ps_.XAxis2; - } - set - { - ps_.XAxis2 = value; - } + return ps_.XAxis2; } + set + { + ps_.XAxis2 = value; + } + } - /// <summary> - /// The right ordinate axis. - /// </summary> - public Axis YAxis2 + /// <summary> + /// The right ordinate axis. + /// </summary> + public Axis YAxis2 + { + get { - get - { - return ps_.YAxis2; - } - set - { - ps_.YAxis2 = value; - } + return ps_.YAxis2; } + set + { + ps_.YAxis2 = value; + } + } - /// <summary> - /// Gets or Sets the legend to use with this plot surface. - /// </summary> - public NPlot.Legend Legend + /// <summary> + /// Gets or Sets the legend to use with this plot surface. + /// </summary> + public NPlot.Legend Legend + { + get { - get - { - return ps_.Legend; - } - set - { - ps_.Legend = value; - } + return ps_.Legend; } - - /// <summary> - /// Gets or Sets the legend z-order. - /// </summary> - public int LegendZOrder + set { - get - { - return ps_.LegendZOrder; - } - set - { - ps_.LegendZOrder = value; - } + ps_.Legend = value; } + } - /// <summary> - /// A color used to paint the plot background. Mutually exclusive with PlotBackImage and PlotBackBrush - /// </summary> - public System.Drawing.Color PlotBackColor + /// <summary> + /// Gets or Sets the legend z-order. + /// </summary> + public int LegendZOrder + { + get { - set - { - ps_.PlotBackColor = value; - } + return ps_.LegendZOrder; } + set + { + ps_.LegendZOrder = value; + } + } - - /// <summary> - /// An imaged used to paint the plot background. Mutually exclusive with PlotBackColor and PlotBackBrush - /// </summary> - public System.Drawing.Bitmap PlotBackImage + /// <summary> + /// A color used to paint the plot background. Mutually exclusive with PlotBackImage and PlotBackBrush + /// </summary> + public System.Drawing.Color PlotBackColor + { + set { - set - { - ps_.PlotBackImage = value; - } + ps_.PlotBackColor = value; } + } - /// <summary> - /// A Rectangle brush used to paint the plot background. Mutually exclusive with PlotBackColor and PlotBackBrush - /// </summary> - public IRectangleBrush PlotBackBrush + /// <summary> + /// An imaged used to paint the plot background. Mutually exclusive with PlotBackColor and PlotBackBrush + /// </summary> + public System.Drawing.Bitmap PlotBackImage + { + set { - set - { - ps_.PlotBackBrush = value; - } + ps_.PlotBackImage = value; } + } - /// <summary> - /// Smoothing mode to use when drawing plots. - /// </summary> - public System.Drawing.Drawing2D.SmoothingMode SmoothingMode - { - get - { - return ps_.SmoothingMode; - } - set - { - ps_.SmoothingMode = value; - } + /// <summary> + /// A Rectangle brush used to paint the plot background. Mutually exclusive with PlotBackColor and PlotBackBrush + /// </summary> + public IRectangleBrush PlotBackBrush + { + set + { + ps_.PlotBackBrush = value; } + } - /// <summary> - /// The bitmap width - /// </summary> - public int Width + /// <summary> + /// Smoothing mode to use when drawing plots. + /// </summary> + public System.Drawing.Drawing2D.SmoothingMode SmoothingMode + { + get { - get - { - return b_.Width; - } + return ps_.SmoothingMode; } + set + { + ps_.SmoothingMode = value; + } + } - /// <summary> - /// The bitmap height - /// </summary> - public int Height + /// <summary> + /// The bitmap width + /// </summary> + public int Width + { + get { - get - { - return b_.Height; - } + return b_.Width; } + } - /// <summary> - /// Renders the bitmap to a MemoryStream. Useful for returning the bitmap from - /// an ASP.NET page. - /// </summary> - /// <returns>The MemoryStream object.</returns> - public System.IO.MemoryStream ToStream( System.Drawing.Imaging.ImageFormat imageFormat ) + /// <summary> + /// The bitmap height + /// </summary> + public int Height + { + get { - System.IO.MemoryStream stream = new System.IO.MemoryStream(); - ps_.Draw(Graphics.FromImage(this.Bitmap),new System.Drawing.Rectangle(0,0,b_.Width,b_.Height)); - this.Bitmap.Save(stream, imageFormat); - return stream; + return b_.Height; } + } - /// <summary> - /// The bitmap to use as the drawing surface. - /// </summary> - public System.Drawing.Bitmap Bitmap + /// <summary> + /// Renders the bitmap to a MemoryStream. Useful for returning the bitmap from + /// an ASP.NET page. + /// </summary> + /// <returns>The MemoryStream object.</returns> + public System.IO.MemoryStream ToStream( System.Drawing.Imaging.ImageFormat imageFormat ) + { + System.IO.MemoryStream stream = new System.IO.MemoryStream(); + ps_.Draw(Graphics.FromImage(this.Bitmap),new System.Drawing.Rectangle(0,0,b_.Width,b_.Height)); + this.Bitmap.Save(stream, imageFormat); + return stream; + } + + + /// <summary> + /// The bitmap to use as the drawing surface. + /// </summary> + public System.Drawing.Bitmap Bitmap + { + get { - get - { - return b_; - } - set - { - b_ = value; - } + return b_; } + set + { + b_ = value; + } + } - /// <summary> - /// The bitmap background color outside the bounds of the plot surface. - /// </summary> - public Color BackColor + /// <summary> + /// The bitmap background color outside the bounds of the plot surface. + /// </summary> + public Color BackColor + { + set { - set - { - backColor_ = value; - } + backColor_ = value; } - object backColor_ = null; - + } + object backColor_ = null; + - /// <summary> - /// Refreshes (draws) the plot. - /// </summary> - public void Refresh() + /// <summary> + /// Refreshes (draws) the plot. + /// </summary> + public void Refresh() + { + if (this.backColor_!=null) { - if (this.backColor_!=null) - { - Graphics g = Graphics.FromImage( b_ ); - g.FillRectangle( (new Pen( (Color)this.backColor_)).Brush,0,0,b_.Width,b_.Height ); - } - ps_.Draw( Graphics.FromImage(b_), new System.Drawing.Rectangle(0,0,b_.Width,b_.Height) ); + Graphics g = Graphics.FromImage( b_ ); + g.FillRectangle( (new Pen( (Color)this.backColor_)).Brush,0,0,b_.Width,b_.Height ); } + ps_.Draw( Graphics.FromImage(b_), new System.Drawing.Rectangle(0,0,b_.Width,b_.Height) ); + } - private NPlot.PlotSurface2D ps_; - private System.Drawing.Bitmap b_; + private NPlot.PlotSurface2D ps_; + private System.Drawing.Bitmap b_; - - /// <summary> - /// Add an axis constraint to the plot surface. Axis constraints can - /// specify relative world-pixel scalings, absolute axis positions etc. - /// </summary> - /// <param name="c">The axis constraint to add.</param> - public void AddAxesConstraint( AxesConstraint c ) - { - ps_.AddAxesConstraint( c ); - } + + /// <summary> + /// Add an axis constraint to the plot surface. Axis constraints can + /// specify relative world-pixel scalings, absolute axis positions etc. + /// </summary> + /// <param name="c">The axis constraint to add.</param> + public void AddAxesConstraint( AxesConstraint c ) + { + ps_.AddAxesConstraint( c ); + } - /// <summary> - /// Whether or not the title will be scaled according to size of the plot - /// surface. - /// </summary> - public bool AutoScaleTitle + /// <summary> + /// Whether or not the title will be scaled according to size of the plot + /// surface. + /// </summary> + public bool AutoScaleTitle + { + get { - get - { - return ps_.AutoScaleTitle; - } - set - { - ps_.AutoScaleTitle = value; - } + return ps_.AutoScaleTitle; } + set + { + ps_.AutoScaleTitle = value; + } + } - /// <summary> - /// When plots are added to the plot surface, the axes they are attached to - /// are immediately modified to reflect data of the plot. If - /// AutoScaleAutoGeneratedAxes is true when a plot is added, the axes will - /// be turned in to auto scaling ones if they are not already [tick marks, - /// tick text and label size scaled to size of plot surface]. If false, - /// axes will not be autoscaling. - /// </summary> - public bool AutoScaleAutoGeneratedAxes + /// <summary> + /// When plots are added to the plot surface, the axes they are attached to + /// are immediately modified to reflect data of the plot. If + /// AutoScaleAutoGeneratedAxes is true when a plot is added, the axes will + /// be turned in to auto scaling ones if they are not already [tick marks, + /// tick text and label size scaled to size of plot surface]. If false, + /// axes will not be autoscaling. + /// </summary> + public bool AutoScaleAutoGeneratedAxes + { + get { - get - { - return ps_.AutoScaleAutoGeneratedAxes; - } - set - { - ps_.AutoScaleAutoGeneratedAxes = value; - } + return ps_.AutoScaleAutoGeneratedAxes; } + set + { + ps_.AutoScaleAutoGeneratedAxes = value; + } + } - /// <summary> - /// Sets the title to be drawn using a solid brush of this color. - /// </summary> - public Color TitleColor + /// <summary> + /// Sets the title to be drawn using a solid brush of this color. + /// </summary> + public Color TitleColor + { + set { - set - { - ps_.TitleColor = value; - } + ps_.TitleColor = value; } + } - /// <summary> - /// The brush used for drawing the title. - /// </summary> - public Brush TitleBrush + /// <summary> + /// The brush used for drawing the title. + /// </summary> + public Brush TitleBrush + { + get { - get - { - return ps_.TitleBrush; - } - set - { - ps_.TitleBrush = value; - } + return ps_.TitleBrush; } + set + { + ps_.TitleBrush = value; + } + } - /// <summary> - /// Remove a drawable object from the plot surface. - /// </summary> - /// <param name="p">the drawable to remove</param> - /// <param name="updateAxes">whether or not to update the axes after removing the idrawable.</param> - public void Remove(IDrawable p, bool updateAxes) - { - ps_.Remove(p, updateAxes); - } + /// <summary> + /// Remove a drawable object from the plot surface. + /// </summary> + /// <param name="p">the drawable to remove</param> + /// <param name="updateAxes">whether or not to update the axes after removing the idrawable.</param> + public void Remove(IDrawable p, bool updateAxes) + { + ps_.Remove(p, updateAxes); + } - /// <summary> - /// Gets an array list containing all drawables currently added to the PlotSurface2D. - /// </summary> - public ArrayList Drawables + /// <summary> + /// Gets an array list containing all drawables currently added to the PlotSurface2D. + /// </summary> + public ArrayList Drawables + { + get { - get - { - return ps_.Drawables; - } + return ps_.Drawables; } - } } } Modified: trunk/src/CandlePlot.cs =================================================================== --- trunk/src/CandlePlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/CandlePlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -145,7 +145,6 @@ } } private double high_; - } @@ -248,12 +247,10 @@ rows_ = ((DataTable)((DataSet)dataSource_).Tables[0]).Rows; } } - else if (dataSource_ is DataTable ) { rows_ = ((DataTable)dataSource_).Rows; } - else { throw new NPlotException ( "not implemented yet" ); @@ -285,7 +282,6 @@ { get { - // try a fast track first if (useDoublesArrays_) { @@ -296,7 +292,6 @@ highDataArray_[i], closeDataArray_[i]); } - // is the data coming from a data source? else if (rows_ != null) { @@ -308,7 +303,6 @@ return new PointOLHC(x, open, low, high, close); } - // the data is coming from individual arrays. else if (abscissaData_ is Array && openData_ is Array && lowData_ is Array && highData_ is Array && closeData_ is Array) { @@ -320,12 +314,10 @@ return new PointOLHC(x, open, low, high, close); } - else { throw new NPlotException("not implemented yet"); } - } } @@ -339,7 +331,6 @@ get { // this is inefficient [could set up delegates in constructor]. - if (useDoublesArrays_) { return openDataArray_.Length; @@ -359,11 +350,17 @@ { int size = ((Array)openData_).Length; if (size != ((Array)closeData_).Length) + { throw new NPlotException("open and close arrays are not of same length"); + } if (size != ((Array)lowData_).Length) + { throw new NPlotException("open and close arrays are not of same length"); + } if (size != ((Array)highData_).Length) + { throw new NPlotException("open and close arrays are not of same length"); + } return size; } @@ -392,6 +389,7 @@ double second = Utils.ToDouble(((Array)abscissaData_).GetValue(1)); minStep = Math.Abs(second - first); } + if (((System.Collections.IList)abscissaData_).Count > 2) { double first = Utils.ToDouble(((Array)abscissaData_).GetValue(1)); @@ -399,6 +397,7 @@ if (Math.Abs(second - first) < minStep) minStep = Math.Abs(second - first); } + if (((System.Collections.IList)abscissaData_)[0] is DateTime) { return new DateTimeAxis(min - minStep / 2.0, max + minStep / 2.0); @@ -410,7 +409,6 @@ } else { - Utils.RowArrayMinMax(this.rows_, out min, out max, (string)this.abscissaData_); if (rows_.Count > 1) @@ -419,6 +417,7 @@ double second = Utils.ToDouble(rows_[1][(string)abscissaData_]); minStep = Math.Abs(second - first); } + if (rows_.Count > 2) { double first = Utils.ToDouble(rows_[1][(string)abscissaData_]); @@ -436,7 +435,6 @@ return new LinearAxis(min - minStep / 2.0, max + minStep / 2.0); } } - } @@ -446,7 +444,6 @@ /// <returns>A suitable y-axis.</returns> public Axis SuggestYAxis() { - double min_l; double max_l; double min_h; @@ -467,7 +464,6 @@ a.IncreaseRange( 0.08 ); return a; } - } @@ -496,12 +492,18 @@ if (cd.Count > 2) { // to be pretty sure we get the smallest gap. int xPos3 = (int)(xAxis.WorldToPhysical(((PointOLHC)cd[2]).X, false)).X; - if (xPos3 - xPos2 < minDist) minDist = xPos3 - xPos2; + if (xPos3 - xPos2 < minDist) + { + minDist = xPos3 - xPos2; + } if (cd.Count > 3) { int xPos4 = (int)(xAxis.WorldToPhysical(((PointOLHC)cd[3]).X, false)).X; - if (xPos4 - xPos3 < minDist) minDist = xPos4 - xPos3; + if (xPos4 - xPos3 < minDist) + { + minDist = xPos4 - xPos3; + } } } @@ -564,11 +566,12 @@ PointOLHC point = (PointOLHC)cd[i]; if ( (!double.IsNaN (point.Open)) && (!double.IsNaN(point.High)) && (!double.IsNaN (point.Low)) && (!double.IsNaN(point.Close)) ) { - int xPos = (int)(xAxis.WorldToPhysical( point.X, false )).X; - if (xPos + offset + addAmount < xAxis.PhysicalMin.X || xAxis.PhysicalMax.X < xPos + offset - addAmount) - continue; + if (xPos + offset + addAmount < xAxis.PhysicalMin.X || xAxis.PhysicalMax.X < xPos + offset - addAmount) + { + continue; + } int yPos1 = (int)(yAxis.WorldToPhysical( point.Low, false )).Y; int yPos2 = (int)(yAxis.WorldToPhysical( point.High, false )).Y; @@ -577,7 +580,6 @@ if (this.Style == Styles.Stick) { - /* // brant hyatt proposed. if (i > 0) @@ -597,7 +599,6 @@ g.DrawLine( p, xPos-addAmount+offset, yPos3, xPos+offset, yPos3 ); g.DrawLine( p, xPos+offset, yPos4, xPos+addAmount+offset, yPos4 ); } - else if (this.Style == Styles.Filled) { g.DrawLine( p, xPos+offset, yPos1, xPos+offset, yPos2 ); @@ -615,12 +616,9 @@ { g.DrawLine( p, xPos-addAmount+offset, yPos3, xPos-addAmount+stickWidth+offset, yPos3 ); } - } - } } - } @@ -746,7 +744,6 @@ g.DrawLine( p, startEnd.Left, (startEnd.Top + startEnd.Bottom)/2, startEnd.Right, (startEnd.Top + startEnd.Bottom)/2 ); - } @@ -774,7 +771,6 @@ /// </summary> public enum Styles { - /// <summary> /// Draw vertical line between low and high, tick on left for open and tick on right for close. /// </summary> @@ -786,7 +782,6 @@ /// in BullishColor and BearishColor properties. /// </summary> Filled - } @@ -865,6 +860,5 @@ public void WriteData( System.Text.StringBuilder sb, RectangleD region, bool onlyInRegion ) { } - } } Modified: trunk/src/DateTimeAxis.cs =================================================================== --- trunk/src/DateTimeAxis.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/DateTimeAxis.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -152,8 +152,7 @@ Point physicalMax, out object labelOffset, out object boundingBox ) - { - + { // TODO: Look at offset and bounding box logic again here. why temp and other vars? Point tLabelOffset; @@ -179,7 +178,6 @@ // draw large ticks. for (int i=0; i<largeTicks.Count; ++i) { - DateTime tickDate = new DateTime( (long)((double)largeTicks[i]) ); string label = LargeTickLabel(tickDate); @@ -207,21 +205,18 @@ { label = tickDate.Year.ToString(); } - else if ( this.LargeTickLabelType_ == LargeTickLabelType.month ) { label = tickDate.ToString("MMM"); label += " "; label += tickDate.Year.ToString().Substring(2,2); } - else if ( this.LargeTickLabelType_ == LargeTickLabelType.day ) { label = (tickDate.Day).ToString(); label += " "; label += tickDate.ToString("MMM"); - } - + } else if ( this.LargeTickLabelType_ == LargeTickLabelType.hourMinute ) { string minutes = tickDate.Minute.ToString(); @@ -246,7 +241,6 @@ } label = tickDate.Hour.ToString() + ":" + minutes + "." + seconds; } - } else { @@ -328,25 +322,33 @@ if(largeTickStep_ == TimeSpan.Zero) { - // if less than 10 minutes, then large ticks on second spacings. - if ( timeLength < new TimeSpan(0,0,2,0,0) ) { this.LargeTickLabelType_ = LargeTickLabelType.hourMinuteSeconds; double secondsSkip; - if (timeLength < new TimeSpan( 0,0,0,10,0 ) ) - secondsSkip = 1.0; - else if ( timeLength < new TimeSpan(0,0,0,20,0) ) - secondsSkip = 2.0; - else if ( timeLength < new TimeSpan(0,0,0,50,0) ) - secondsSkip = 5.0; - else if ( timeLength < new TimeSpan(0,0,2,30,0) ) - secondsSkip = 15.0; - else - secondsSkip = 30.0; + if (timeLength < new TimeSpan(0, 0, 0, 10, 0)) + { + secondsSkip = 1.0; + } + else if (timeLength < new TimeSpan(0, 0, 0, 20, 0)) + { + secondsSkip = 2.0; + } + else if (timeLength < new TimeSpan(0, 0, 0, 50, 0)) + { + secondsSkip = 5.0; + } + else if (timeLength < new TimeSpan(0, 0, 2, 30, 0)) + { + secondsSkip = 15.0; + } + else + { + secondsSkip = 30.0; + } int second = worldMinDate.Second; second -= second % (int)secondsSkip; @@ -371,25 +373,33 @@ currentTickDate = currentTickDate.AddSeconds( secondsSkip ); } } - // Less than 2 hours, then large ticks on minute spacings. - else if ( timeLength < new TimeSpan(0,2,0,0,0) ) { this.LargeTickLabelType_ = LargeTickLabelType.hourMinute; double minuteSkip; - if ( timeLength < new TimeSpan(0,0,10,0,0) ) - minuteSkip = 1.0; - else if ( timeLength < new TimeSpan(0,0,20,0,0) ) - minuteSkip = 2.0; - else if ( timeLength < new TimeSpan(0,0,50,0,0) ) - minuteSkip = 5.0; - else if ( timeLength < new TimeSpan(0,2,30,0,0) ) - minuteSkip = 15.0; - else //( timeLength < new TimeSpan( 0,5,0,0,0) ) - minuteSkip = 30.0; + if (timeLength < new TimeSpan(0, 0, 10, 0, 0)) + { + minuteSkip = 1.0; + } + else if (timeLength < new TimeSpan(0, 0, 20, 0, 0)) + { + minuteSkip = 2.0; + } + else if (timeLength < new TimeSpan(0, 0, 50, 0, 0)) + { + minuteSkip = 5.0; + } + else if (timeLength < new TimeSpan(0, 2, 30, 0, 0)) + { + minuteSkip = 15.0; + } + else //( timeLength < new TimeSpan( 0,5,0,0,0) ) + { + minuteSkip = 30.0; + } int minute = worldMinDate.Minute; minute -= minute % (int)minuteSkip; @@ -415,20 +425,24 @@ } // Less than 2 days, then large ticks on hour spacings. - else if ( timeLength < new TimeSpan(2,0,0,0,0) ) { this.LargeTickLabelType_ = LargeTickLabelType.hourMinute; double hourSkip; - if ( timeLength < new TimeSpan(0,10,0,0,0) ) - hourSkip = 1.0; - else if ( timeLength < new TimeSpan(0,20,0,0,0) ) - hourSkip = 2.0; - else - hourSkip = 6.0; + if (timeLength < new TimeSpan(0, 10, 0, 0, 0)) + { + hourSkip = 1.0; + } + else if (timeLength < new TimeSpan(0, 20, 0, 0, 0)) + { + hourSkip = 2.0; + } + else + { + hourSkip = 6.0; + } - int hour = worldMinDate.Hour; hour -= hour % (int)hourSkip; @@ -449,25 +463,29 @@ currentTickDate = currentTickDate.AddHours( hourSkip ); } - } - - // less than 5 months, then large ticks on day spacings. - else if ( timeLength < new TimeSpan(daysInMonth*4,0,0,0,0)) { this.LargeTickLabelType_ = LargeTickLabelType.day; double daySkip; - if ( timeLength < new TimeSpan(10,0,0,0,0) ) - daySkip = 1.0; - else if (timeLength < new TimeSpan(20,0,0,0,0) ) - daySkip = 2.0; - else if (timeLength < new TimeSpan(7*10,0,0,0,0) ) - daySkip = 7.0; - else - daySkip = 14.0; + if (timeLength < new TimeSpan(10, 0, 0, 0, 0)) + { + daySkip = 1.0; + } + else if (timeLength < new TimeSpan(20, 0, 0, 0, 0)) + { + daySkip = 2.0; + } + else if (timeLength < new TimeSpan(7 * 10, 0, 0, 0, 0)) + { + daySkip = 7.0; + } + else + { + daySkip = 14.0; + } DateTime currentTickDate = new DateTime( worldMinDate.Year, @@ -476,11 +494,12 @@ if (daySkip == 2.0) { - TimeSpan timeSinceBeginning = currentTickDate - DateTime.MinValue; if (timeSinceBeginning.Days % 2 == 1) + { currentTickDate = currentTickDate.AddDays(-1.0); + } } if (daySkip == 7 || daySkip == 14.0) @@ -508,8 +527,9 @@ case DayOfWeek.Sunday: currentTickDate = currentTickDate.AddDays(-6.0); break; + default: + break; } - } if (daySkip == 14.0f) @@ -534,38 +554,48 @@ currentTickDate = currentTickDate.AddDays(daySkip); } } - - - // else ticks on month or year spacings. - + // else ticks on month or year spacings. else if ( timeLength >= new TimeSpan(daysInMonth*4,0,0,0,0) ) { - int monthSpacing = 0; if ( timeLength.Days < daysInMonth*(12*3+6) ) { LargeTickLabelType_ = LargeTickLabelType.month; - if ( timeLength.Days < daysInMonth*10 ) - monthSpacing = 1; - else if ( timeLength.Days < daysInMonth*(12*2) ) - monthSpacing = 3; - else // if ( timeLength.Days < daysInMonth*(12*3+6) ) - monthSpacing = 6; + if (timeLength.Days < daysInMonth * 10) + { + monthSpacing = 1; + } + else if (timeLength.Days < daysInMonth * (12 * 2)) + { + monthSpacing = 3; + } + else // if ( timeLength.Days < daysInMonth*(12*3+6) ) + { + monthSpacing = 6; + } } else { LargeTickLabelType_ = LargeTickLabelType.year; if (timeLength.Days < daysInMonth * (12 * 6)) + { monthSpacing = 12; + } else if (timeLength.Days < daysInMonth * (12 * 12)) + { monthSpacing = 24; + } else if (timeLength.Days < daysInMonth * (12 * 30)) + { monthSpacing = 60; + } else + { monthSpacing = 120; + } //LargeTickLabelType_ = LargeTickLabelType.none; } @@ -675,7 +705,5 @@ } } private TimeSpan largeTickStep_ = TimeSpan.Zero; - - } } Modified: trunk/src/FilledRegion.cs =================================================================== --- trunk/src/FilledRegion.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/FilledRegion.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -116,11 +116,9 @@ } else if (lp1_ != null && lp2_ != null) { - SequenceAdapter a1 = new SequenceAdapter(lp1_.DataSource, lp1_.DataMember, lp1_.OrdinateData, lp1_.AbscissaData); SequenceAdapter a2 = new SequenceAdapter(lp2_.DataSource, lp2_.DataMember, lp2_.OrdinateData, lp2_.AbscissaData); - int count = a1.Count + a2.Count; PointF[] points = new PointF[count]; for (int i = 0; i < a1.Count; ++i) @@ -179,5 +177,4 @@ private Brush brush_ = new SolidBrush( Color.GhostWhite ); private IRectangleBrush areaBrush_ = null; } - } Modified: trunk/src/Grid.cs =================================================================== --- trunk/src/Grid.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/Grid.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -191,7 +191,6 @@ /// <param name="yAxis">The physical y axis to draw vertical lines parallel to.</param> public void Draw( Graphics g, PhysicalAxis xAxis, PhysicalAxis yAxis ) { - ArrayList xLargePositions = null; ArrayList yLargePositions = null; ArrayList xSmallPositions = null; @@ -209,7 +208,6 @@ DrawGridLines( g, yAxis, xAxis, yLargePositions, false, this.MajorGridPen ); } - if (this.horizontalGridType_ == GridType.Fine) { xAxis.Axis.WorldTickPositions_SecondPass( xAxis.PhysicalMin, xAxis.PhysicalMax, xLargePositions, ref xSmallPositions ); @@ -221,8 +219,6 @@ yAxis.Axis.WorldTickPositions_SecondPass( yAxis.PhysicalMin, yAxis.PhysicalMax, yLargePositions, ref ySmallPositions ); DrawGridLines( g, yAxis, xAxis, ySmallPositions, false, this.MinorGridPen ); } - } - } -} +} \ No newline at end of file Modified: trunk/src/HistogramPlot.cs =================================================================== --- trunk/src/HistogramPlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/HistogramPlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -87,23 +87,29 @@ // (1) determine the top left hand point of the bar (assuming not centered) PointD p1 = data[i]; - if ( double.IsNaN(p1.X) || double.IsNaN(p1.Y) ) - continue; + if (double.IsNaN(p1.X) || double.IsNaN(p1.Y)) + { + continue; + } // (2) determine the top right hand point of the bar (assuming not centered) PointD p2; if (i+1 != data.Count) { p2 = data[i+1]; - if ( double.IsNaN(p2.X) || double.IsNaN(p2.Y) ) - continue; + if (double.IsNaN(p2.X) || double.IsNaN(p2.Y)) + { + continue; + } p2.Y = p1.Y; } else if (i != 0) { p2 = data[i-1]; - if ( double.IsNaN(p2.X) || double.IsNaN(p2.Y) ) - continue; + if (double.IsNaN(p2.X) || double.IsNaN(p2.Y)) + { + continue; + } double offset = p1.X - p2.X; p2.X = p1.X + offset; p2.Y = p1.Y; @@ -186,7 +192,6 @@ } g.DrawRectangle( Pen, r.X, r.Y, r.Width, r.Height ); - } } @@ -295,8 +300,7 @@ /// <returns>A suitable y-axis.</returns> public Axis SuggestYAxis() { - - if ( this.isStacked_ ) + if (this.isStacked_) { double tmpMax = 0.0f; ArrayList adapterList = new ArrayList(); @@ -433,14 +437,12 @@ /// <param name="startEnd">A rectangle specifying the bounds of the area in the legend set aside for drawing.</param> public void DrawInLegend( Graphics g, Rectangle startEnd ) { - if (Filled) { g.FillRectangle( rectangleBrush_.Get(startEnd), startEnd ); } g.DrawRectangle( Pen, startEnd.X, startEnd.Y, startEnd.Width, startEnd.Height ); - } @@ -499,7 +501,5 @@ } } private double baseOffset_; - - } } Modified: trunk/src/HorizontalLine.cs =================================================================== --- trunk/src/HorizontalLine.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/HorizontalLine.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -62,6 +62,7 @@ this.pen_ = new Pen( color ); } + /// <summary> /// Constructor /// </summary> @@ -100,7 +101,6 @@ this.label_ = value; } } - private string label_ = ""; @@ -140,6 +140,7 @@ return new LinearAxis( this.value_, this.value_ ); } + /// <summary> /// Writes text data describing the horizontal line object to the supplied string builder. It is /// possible to specify that the data will be written only if the line is in the specified @@ -150,7 +151,6 @@ /// <param name="onlyInRegion">If true, data will be written only if the line is in the specified region.</param> public void WriteData(System.Text.StringBuilder sb, RectangleD region, bool onlyInRegion) { - // return if line is not in plot region and if (value_ > region.Y+region.Height || value_ < region.Y) { @@ -165,9 +165,9 @@ sb.Append( "\r\n" ); sb.Append( value_.ToString() ); sb.Append( "\r\n" ); - } + /// <summary> /// Draws the horizontal line plot on a GDI+ surface against the provided x and y axes. /// </summary> @@ -196,7 +196,7 @@ // todo: clip and proper logic for flipped axis min max. } - private double value_; + /// <summary> /// ordinate (Y) value to draw horizontal line at. /// </summary> @@ -211,8 +211,9 @@ value_ = value; } } + private double value_; - private Pen pen_ = new Pen( Color.Black ); + /// <summary> /// Pen to use to draw the horizontal line. /// </summary> @@ -227,6 +228,7 @@ pen_ = value; } } + private Pen pen_ = new Pen(Color.Black); /// <summary> @@ -262,6 +264,5 @@ } } private float scale_ = 1.0f; - } } Modified: trunk/src/IDrawable.cs =================================================================== --- trunk/src/IDrawable.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/IDrawable.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -34,6 +34,7 @@ namespace NPlot { + /// <summary> /// Defines a Draw method for drawing objects against an x and y /// Physical Axis. Modified: trunk/src/IGradient.cs =================================================================== --- trunk/src/IGradient.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/IGradient.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -48,6 +48,5 @@ /// <param name="prop">the number to get corresponding color for (between 0.0 and 1.0)</param> /// <returns>The color corresponding to the supplied number.</returns> Color GetColor( double prop ); - } } Modified: trunk/src/IPlot.cs =================================================================== --- trunk/src/IPlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/IPlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -79,6 +79,5 @@ /// <param name="region">Only write out data in this region if onlyInRegion is true.</param> /// <param name="onlyInRegion">If true, only data in region is written, else all data is written.</param> void WriteData( System.Text.StringBuilder sb, RectangleD region, bool onlyInRegion ); - } } Modified: trunk/src/IPlotSurface2D.cs =================================================================== --- trunk/src/IPlotSurface2D.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/IPlotSurface2D.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -231,6 +231,5 @@ /// <param name="p"></param> void UpdateAxes( IPlot p ); */ - } } Modified: trunk/src/ISequencePlot.cs =================================================================== --- trunk/src/ISequencePlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/ISequencePlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -59,7 +59,5 @@ /// Gets or sets the data, or column name for the ordinate [y] axis. /// </summary> object OrdinateData { get; set; } - } - } Modified: trunk/src/ISurface.cs =================================================================== --- trunk/src/ISurface.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/ISurface.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -72,7 +72,5 @@ /// </summary> /// <param name="e">mouse event args</param> void DoMouseDown( MouseEventArgs e ); - } - } Modified: trunk/src/ITransform2D.cs =================================================================== --- trunk/src/ITransform2D.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/ITransform2D.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -52,7 +52,5 @@ /// Transforms the given world point to physical coordinates /// </summary> PointF Transform( PointD worldPoint ); - } - } Modified: trunk/src/ImagePlot.cs =================================================================== --- trunk/src/ImagePlot.cs 2007-03-28 23:28:32 UTC (rev 28) +++ trunk/src/ImagePlot.cs 2007-03-30 19:12:03 UTC (rev 29) @@ -41,6 +41,7 @@ /// </summary> public class ImagePlot : IPlot { + private double[,] data_; private double xStart_ = 0.0; private double xStep_ = 1.0; @@ -343,7 +344,5 @@ public void WriteData( System.Text.StringBuilder sb, Rectan... [truncated message content] |
From: SourceForge.net <no...@so...> - 2007-03-29 16:26:52
|
Bugs item #1688713, was opened at 2007-03-26 16:19 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1688713&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: randalx (randalx) >Assigned to: Jamie McQuay (jamcquay) Summary: Problems ploting single point Initial Comment: Hi, My program plots various LinePlots and PointPlots using the AbscissaData and OrdinateData. The data can change based on user interaction. A bug occurs when the data is for only one point. First there is an exception in DateTimeAxis.cs void DrawTicks(...) { ... PointF lastPos = WorldToPhysical((double)largeTicks[0], physicalMin, physicalMax, true);//ed The exception is due to accessing largeTicks[0]. The previous call to WorldTickPositions() fails to add any data to the largeTicks array. A quick fix was to add the following code: if (largeTicks.Count <= 0) { return; } But the result is not very satisfactory as I'd still like to see the point plotted. My temporary hack was to adjust the XAxis1.WorldMax and XAxis1.WorldMin by 100 so as to show a centered point but this is far from ideal. Thanks, Randal ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-03-29 12:26 Message: Logged In: YES user_id=613279 Originator: NO Code snippet: plotSurface.Clear(); DateTime[] xs = { new DateTime(2002, 9, 1)}; float[] ys = { 4.7f }; Marker m = new Marker(Marker.MarkerType.Diamond, 6, Color.DarkGreen); PointPlot pp = new PointPlot(); pp.AbscissaData = xs; pp.OrdinateData = ys; pp.Marker = m; plotSurface.Add(pp); LabelAxis lay = new LabelAxis(plotSurface.YAxis1); lay.AddLabel("P3", 3); lay.AddLabel("P4", 4); lay.AddLabel("P5", 5); plotSurface.YAxis1 = lay; plotSurface.Refresh(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1688713&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-03-28 23:29:18
|
Bugs item #1671259, was opened at 2007-02-28 16:32 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1671259&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed Resolution: None Priority: 5 Private: No Submitted By: randalx (randalx) Assigned to: Jamie McQuay (jamcquay) Summary: Removing Plot does not Update Axes accurately Initial Comment: When removing Plots I noticed that the Axis were not being recalculated properly. The problem occurs because "position" is used instead of "i" in the UpdateAxes function. The problem occurs in: PlotSurface2D.cs private void UpdateAxes( bool recalculateAll ) It should be the following: -------------------------------------------------- private void UpdateAxes( bool recalculateAll ) ... for (int i = position; i < drawables_.Count; ++i) { // only update axes if this drawable is an IPlot. if (!(drawables_[i] is IPlot)) continue; IPlot p = (IPlot)drawables_[i]; XAxisPosition xap = (XAxisPosition)xAxisPositions_[i]; YAxisPosition yap = (YAxisPosition)yAxisPositions_[i]; ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-03-28 19:29 Message: Logged In: YES user_id=613279 Originator: NO Fixed for version 0.9.10.1 ---------------------------------------------------------------------- Comment By: Jamie McQuay (jamcquay) Date: 2007-03-10 09:16 Message: Logged In: YES user_id=613279 Originator: NO thank you for your bug fix. I will look it over and make the appropriate changes. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1671259&group_id=161868 |
From: <jam...@us...> - 2007-03-28 23:28:31
|
Revision: 28 http://svn.sourceforge.net/nplot/?rev=28&view=rev Author: jamcquay Date: 2007-03-28 16:28:32 -0700 (Wed, 28 Mar 2007) Log Message: ----------- Fixed [SF bug 1671259] Fixed for version 0.9.10.1 Wrong index was being used when updating drawables, only the first in the list was being updated. Solution posted within the bug report by randalx Signed off by: jamcquay Modified Paths: -------------- trunk/src/PlotSurface2D.cs Modified: trunk/src/PlotSurface2D.cs =================================================================== --- trunk/src/PlotSurface2D.cs 2007-02-20 20:19:52 UTC (rev 27) +++ trunk/src/PlotSurface2D.cs 2007-03-28 23:28:32 UTC (rev 28) @@ -610,14 +610,13 @@ for (int i = position; i < drawables_.Count; ++i) { - // only update axes if this drawable is an IPlot. - if (!(drawables_[position] is IPlot)) + if (!(drawables_[i] is IPlot)) continue; - IPlot p = (IPlot)drawables_[position]; - XAxisPosition xap = (XAxisPosition)xAxisPositions_[position]; - YAxisPosition yap = (YAxisPosition)yAxisPositions_[position]; + IPlot p = (IPlot)drawables_[i]; + XAxisPosition xap = (XAxisPosition)xAxisPositions_[i]; + YAxisPosition yap = (YAxisPosition)yAxisPositions_[i]; if (xap == XAxisPosition.Bottom) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: Michael B. <mi...@ab...> - 2007-03-27 14:05:42
|
Tzeng, Nigel H. skrev: > Michael, > > I don't know if I'm doing it the right way but I created a new interaction that handled the mouse up event and called a passed in callback. I pass back the x,y location of the click (like in the tooltip) and also the x,y values 3 pixels up and left and 3 pixels down and right to have a range to check. My markers are 6 pixels in size so I think that should be good enough. > > Given I have some 100,000 points in my plots I hope someone has a more elegant way than doing a search. I briefly thought of making the markers some kind of button or component to handle mouse events but quickly rejected that thought given the number of points I have. > > I can send a code snippet later when I'm on my dev box. This sounds like a time consuming affair - but it certainly has to be tried ;-) I would very much appreciate any relevant code that you have - thank you ;-) -- Michael Banzon Developer Mobile: +45 3124 2455 Mail: mi...@ab... Web: http://www.abc-tool.com/ intellitory ApS Njalsgade 88, 2. sal DK-2300 København S Denmark |
From: Tzeng, N. H. <Nig...@jh...> - 2007-03-27 13:58:40
|
Michael, =20 I don't know if I'm doing it the right way but I created a new = interaction that handled the mouse up event and called a passed in = callback. I pass back the x,y location of the click (like in the = tooltip) and also the x,y values 3 pixels up and left and 3 pixels down = and right to have a range to check. My markers are 6 pixels in size so = I think that should be good enough. =20 Given I have some 100,000 points in my plots I hope someone has a more = elegant way than doing a search. I briefly thought of making the = markers some kind of button or component to handle mouse events but = quickly rejected that thought given the number of points I have. =20 I can send a code snippet later when I'm on my dev box. =20 Nigel ________________________________ From: npl...@li... on behalf of Michael = Banzon Sent: Tue 3/27/2007 3:45 AM To: npl...@li... Subject: [Nplot-devel] Select points Hi, I'm currently developing an application, using NPlot. I have a graph containing 3 PointPlot's, and need the capture event where a point has been clicked. The best scenario would be to get the exact coordinates of the point that was clicked. The second best would be to get the coordinates of the click. Does anyone have any input on how to solve this problem?? Thanks in advance... -- Michael Banzon Developer Mobile: +45 3124 2455 Mail: mi...@ab... Web: http://www.abc-tool.com/ intellitory ApS Njalsgade 88, 2. sal DK-2300 K=C3=B8benhavn S Denmark -------------------------------------------------------------------------= Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share = your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D= DEVDEV _______________________________________________ Nplot-devel mailing list Npl...@li... https://lists.sourceforge.net/lists/listinfo/nplot-devel |
From: Michael B. <mi...@ab...> - 2007-03-27 07:45:45
|
Hi, I'm currently developing an application, using NPlot. I have a graph containing 3 PointPlot's, and need the capture event where a point has been clicked. The best scenario would be to get the exact coordinates of the point that was clicked. The second best would be to get the coordinates of the click. Does anyone have any input on how to solve this problem?? Thanks in advance... -- Michael Banzon Developer Mobile: +45 3124 2455 Mail: mi...@ab... Web: http://www.abc-tool.com/ intellitory ApS Njalsgade 88, 2. sal DK-2300 København S Denmark |
From: SourceForge.net <no...@so...> - 2007-03-26 20:19:58
|
Bugs item #1688713, was opened at 2007-03-26 20:19 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1688713&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: randalx (randalx) Assigned to: Nobody/Anonymous (nobody) Summary: Problems ploting single point Initial Comment: Hi, My program plots various LinePlots and PointPlots using the AbscissaData and OrdinateData. The data can change based on user interaction. A bug occurs when the data is for only one point. First there is an exception in DateTimeAxis.cs void DrawTicks(...) { ... PointF lastPos = WorldToPhysical((double)largeTicks[0], physicalMin, physicalMax, true);//ed The exception is due to accessing largeTicks[0]. The previous call to WorldTickPositions() fails to add any data to the largeTicks array. A quick fix was to add the following code: if (largeTicks.Count <= 0) { return; } But the result is not very satisfactory as I'd still like to see the point plotted. My temporary hack was to adjust the XAxis1.WorldMax and XAxis1.WorldMin by 100 so as to show a centered point but this is far from ideal. Thanks, Randal ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1688713&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-03-10 14:16:50
|
Bugs item #1671259, was opened at 2007-02-28 16:32 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1671259&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: randalx (randalx) >Assigned to: Jamie McQuay (jamcquay) Summary: Removing Plot does not Update Axes accurately Initial Comment: When removing Plots I noticed that the Axis were not being recalculated properly. The problem occurs because "position" is used instead of "i" in the UpdateAxes function. The problem occurs in: PlotSurface2D.cs private void UpdateAxes( bool recalculateAll ) It should be the following: -------------------------------------------------- private void UpdateAxes( bool recalculateAll ) ... for (int i = position; i < drawables_.Count; ++i) { // only update axes if this drawable is an IPlot. if (!(drawables_[i] is IPlot)) continue; IPlot p = (IPlot)drawables_[i]; XAxisPosition xap = (XAxisPosition)xAxisPositions_[i]; YAxisPosition yap = (YAxisPosition)yAxisPositions_[i]; ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-03-10 09:16 Message: Logged In: YES user_id=613279 Originator: NO thank you for your bug fix. I will look it over and make the appropriate changes. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1671259&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-02-28 21:32:01
|
Bugs item #1671259, was opened at 2007-02-28 21:32 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1671259&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: randalx (randalx) Assigned to: Nobody/Anonymous (nobody) Summary: Removing Plot does not Update Axes accurately Initial Comment: When removing Plots I noticed that the Axis were not being recalculated properly. The problem occurs because "position" is used instead of "i" in the UpdateAxes function. The problem occurs in: PlotSurface2D.cs private void UpdateAxes( bool recalculateAll ) It should be the following: -------------------------------------------------- private void UpdateAxes( bool recalculateAll ) ... for (int i = position; i < drawables_.Count; ++i) { // only update axes if this drawable is an IPlot. if (!(drawables_[i] is IPlot)) continue; IPlot p = (IPlot)drawables_[i]; XAxisPosition xap = (XAxisPosition)xAxisPositions_[i]; YAxisPosition yap = (YAxisPosition)yAxisPositions_[i]; ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1671259&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-02-21 16:47:53
|
Bugs item #1665403, was opened at 2007-02-21 08:47 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1665403&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: General Group: 0.9.9.2 Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: Interactions fail in Managed C++ code calls. Initial Comment: Hello, I'm writing a .NET 2003 Managed C++ application. When I try to create an interaction, the initialization fails because in NPlot 0.9.9.2, Interactions is an abstract class containing Interaction. In .NET 2003 Managed C++, this abstract class is considered like a pure virtual class and so it doesn't recognize that there's a definition within it. My solution was to remove the Interactions wrapper which is not the cleanest design, but at least my C++ code can now instantiate the Interaction ok and my charts look very pretty. Thank you for all the hard work you've put into this valuable resource. Sincerely, James Lefeu james AT ccuc DOT net ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821568&aid=1665403&group_id=161868 |
From: SourceForge.net <no...@so...> - 2007-02-20 20:21:11
|
Patches item #1622909, was opened at 2006-12-27 08:58 Message generated for change (Comment added) made by jamcquay You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821570&aid=1622909&group_id=161868 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None >Status: Closed Resolution: None Priority: 5 Private: No Submitted By: Pawel Konieczny (konieczp) Assigned to: Jamie McQuay (jamcquay) Summary: Various Bugfixes and improvements for Windwos.PlotSurface2d Initial Comment: Here are various bugfixes and improvements for Windows.PlotSurface2D control, patch against version 0.9.10.0. Note: although the code should not contain any .NET 2.0 specifics, I have tested it only in the .NET 2.0 context. //Pawel ---------------------------------------------------------------------- >Comment By: Jamie McQuay (jamcquay) Date: 2007-02-20 15:21 Message: Logged In: YES user_id=613279 Originator: NO correct. The compiler switch "API_1_1" is used to hide this call when compiling for version 1.1 ---------------------------------------------------------------------- Comment By: nigel_ht (nigel_ht) Date: 2007-02-18 14:04 Message: Logged In: YES user_id=1328335 Originator: NO Change calls SystemInformation.MouseWheelScrollDelta which is a .NET 2.0 property. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=821570&aid=1622909&group_id=161868 |