Hi,
recently I started to use the wxCode component wxFreeChart due to
requirements of one of my projects to display x-y-charts for series of
curves.
I have several issues in using wxFreeChart and I hope someone might be
able to give some advice.
1) I was able to compile wxFreeChart as a static library but when I try
to compile it as a DLL (which is necessary for my project) I get tons of
warning messages from Visual C++ 2008/2010 like the following:
wxCode\components\freechart\include\wx/drawobject.h(46) : warning C4251:
'Observable<O>::OIt': class 'std::_Vector_iterator<_Ty,_Alloc>' needs to
have a DLL interface to be used by clients of class 'Observable<O>'
with
[
O=DrawObserver
]
and
[
_Ty=DrawObserver *,
_Alloc=std::allocator<DrawObserver *>
]
and
[
O=DrawObserver
]
Although these are "only" warnings and the resulting demo application
seems to work (except the dynamic X-Y sample which crashes) I would like
to get rid of those warnings since I fear there might be situations
where not resolving this might impose problems.
2) At least in the VC++ project files coming with wxFreeChart there are
some missing pieces: one has to add the AUI link library for the
component itself and the ADV link library for the sample application.
Additionally it seems not to be possible to generate a static library
for wxFreeChart based on wxWidgets DLLs (although this option can be
selected from the build configurations it doesn't work)
3) I plan to produce charts by wxFreeChart and to add them to PDF
reports generated based on my own wxCode component wxPdfDocument. In
principle I got it to work using my wxPdfDC class but I have problems to
display smooth curves. If I use too few data points I see edges in the
curve, if I use too many data points I see a very jagged curve. I think
this is a problem with all wxDC based classes since they are pixel
oriented. Nevertheless it might be possible to get smoother curves by
using splines instead of simple lines to connect the data points. How
could I accomplish this? Should I create a new XYRenderer?
4) I need to create a X-Y chart with 2 different y-axes where one axis
shows the values in degree Celsius and the other in degree Fahrenheit.
The problem is that I get crooked values for the axis annotation. For
example if I have an axis for Celsius with a range from 20 to 35 degrees
I get good annotations for the Celsius axis (namely 20, 25, 30, 35) but
for the Fahrenheit axis I get 68, 77, 86, 95, but I would like to get
shifted ticks and annotations (i.e. ticks marked with 70, 80 and 90). Is
this possible somehow? Or would I have to create a specialized axis
class for that purpose?
5) Are there plans to create a version of wxFreeChart based on
wxGraphicsContext instead of wxDC? For vector oriented output devices
this would be probably a lot better. I myself plan to implement a
wxPdfGraphicsContext.
Regards,
Ulrich
|