Steema Issues Database

Note: This database is for bugs and wishes only. For technical support help, if you are a customer please visit our online forums;
otherwise you can use StackOverflow.
Before using this bug-tracker we recommend a look at this document, Steema Bug Fixing Policy.



Bug 93

Summary: The pointer of Horizontal Line can't be drawed clearly
Product: FireMonkey TeeChart Reporter: elmec <wave>
Component: SeriesAssignee: Steema Issue Manager <issuemanager>
Status: IN_PROGRESS ---    
Severity: major CC: david, narcis
Priority: ---    
Version: 131016   
Target Milestone: ---   
Hardware: PC   
OS: Windows   
URL: http://www.teechart.net/support/viewtopic.php?f=3&t=14482&start=0
Chart Series: --- Delphi / C++ Builder RAD IDE Version:
Attachments: XE4 Firemonkey HD Application

Description elmec 2013-11-12 09:31:29 EST
Created attachment 17 [details]
XE4 Firemonkey HD Application

There is no Horizontal Point Line, 
so I using the Horizontal Line, and set the Pointer as visible,
change the transparency to 100 to hide the line between pointer
to make it just looks like as TPointSeries.

But just like shown in the attachment, 
when there are a lot of points , 
they are drawed overlaping each other, cannt be shown clearly.
When I zoomin the series, it became clearly drawed.

BTW, I am using 
XE4 Firemonkey HD Application and Teechart201308 for XE4.
Comment 1 narcís calvet 2013-11-12 09:46:09 EST
There's a problem with the bottom axis range. Commenting out the line below points are visible.

	//Chart1->BottomAxis->SetMinMax(-0.3, 0.3);
Comment 2 narcís calvet 2013-11-13 06:02:39 EST
Setting Pointer.Pen.Color to clTeeColor works:

	Series2->Pointer->Pen->Color=clTeeColor;
Comment 3 david berneda 2013-11-13 10:25:44 EST
(In reply to elmec from comment #0)
> Created attachment 17 [details]
> XE4 Firemonkey HD Application
> 
> There is no Horizontal Point Line, 
> so I using the Horizontal Line, and set the Pointer as visible,
> change the transparency to 100 to hide the line between pointer
> to make it just looks like as TPointSeries.
> 
> But just like shown in the attachment, 
> when there are a lot of points , 
> they are drawed overlaping each other, cannt be shown clearly.
> When I zoomin the series, it became clearly drawed.
> 
> BTW, I am using 
> XE4 Firemonkey HD Application and Teechart201308 for XE4.


FireMonkey Direct2D canvas is "blending" pixels when they are painted overlapped using borders instead of filling.

One setting that makes all points visible is to disable the Pointer->Pen like:

 Series2->Pointer->Pen->Hide();

However, I've been trying to discover how to deactivate this "blending" effect.

Setting canvas to GPU does not do blend, but other parts like text don't look good:

// ProjectPointer.cpp
extern "C" int FMXmain()
{
	try
	{
                GlobalUseGPUCanvas=true;   // <--------- added this line
		Application->Initialize();
......


Another property that should work fine (but it fails), is setting the form quality to "high performance" to disable pixel "blending":

__fastcall TForm12::TForm12(TComponent* Owner)
	: TForm(Owner)
{
  Quality=TCanvasQuality::ccHighPerformance;  // <----- this line
....


I'm investigating why FireMonkey is painting it correctly first time, and then inmediately is painting again with ccHighQuality. Not sure if its a TChart bug or FireMonkey, as it does the same in "XE5 Update 1"

Hope its fine for you to just hide the Pointer->Pen, and we'll investigate how to deactivate "blending" in the near future.
Comment 4 narcís calvet 2013-11-13 10:36:19 EST
(In reply to david berneda from comment #3)
> 
> One setting that makes all points visible is to disable the Pointer->Pen
> like:
> 
>  Series2->Pointer->Pen->Hide();

My previous comment was incomplete. That's only true with psRectangle but fails with psSmallDot.
Comment 5 david berneda 2013-11-14 09:45:28 EST
(In reply to narcís calvet from comment #4)
> (In reply to david berneda from comment #3)
> > 
> > One setting that makes all points visible is to disable the Pointer->Pen
> > like:
> > 
> >  Series2->Pointer->Pen->Hide();
> 
> My previous comment was incomplete. That's only true with psRectangle but
> fails with psSmallDot.

Yes, psSmallDot is currently done with a line pen of length 1.