|
챠트를 여러개 동적으로 생성했습니다..(물론 라인시리즈도 동적 생성)
각 챠트가 무슨 챠트인지 챠트안데 canvas로 글씨를 넣었는데, 글씨 앞오로 라인시리즈가
와야하는데, 글씨가 라인을 가리네요...
beforeDrawseries, beforeDrawAxis 다 썼는데, 안돼네요.
한 두개 정도는 라인시리즈 뒤에 글씨가 그려지는데요...
모든 챠트가 하나의 BeforeDrawSerise 이벤트를 사용하면 안돼나요??
좋은 방법 있음 꼭! 좀 알려주세요~
void __fastcall TFormGraph::CommonFontDraw(int nIndex)
{
float yPos = ( (Chart[nIndex]->ChartRect.Bottom
- Chart[nIndex]->ChartRect.Top ) /2 )
+ Chart[nIndex]->ChartRect.Top;
float xPos = ( (Chart[nIndex]->ChartRect.Right
- Chart[nIndex]->ChartRect.Left ) / 2 )
+ Chart[nIndex]->ChartRect.Left;
if( ( Chart[nIndex]->ChartRect.Bottom
- Chart[nIndex]->ChartRect.Top) <= 48 )
{
if( Chart[nIndex]->Width >= ((Chart[nIndex]->ChartRect.Bottom
- Chart[nIndex]->ChartRect.Top ) / 3)*25 )
Chart[nIndex]->Canvas->Font->Size =
( Chart[nIndex]->ChartRect.Bottom
- Chart[nIndex]->ChartRect.Top ) / 3;
else
Chart[nIndex]->Canvas->Font->Size = Chart[nIndex]->Width / 25;
}
else
{
if( Chart[nIndex]->Width >= 400 )
Chart[nIndex]->Canvas->Font->Size = 20;
else
Chart[nIndex]->Canvas->Font->Size = Chart[nIndex]->Width / 25;
}
Chart[nIndex]->Canvas->Font->Name = "Arial";
Chart[nIndex]->Canvas->Font->Color = clGray;
Chart[nIndex]->Canvas->Font->Style = TFontStyles()<< fsBold;
Chart[nIndex]->Canvas->BackMode = TRANSPARENT;
unsigned oldalign = SetTextAlign(Chart[nIndex]->Canvas->Handle, TA_CENTER);
Chart[nIndex]->Canvas->TextOutA(xPos
, yPos+(Chart[nIndex]->Canvas->Font->Height/2)
, g_szCommonParam[nIndex]);
SetTextAlign(Chart[nIndex]->Canvas->Handle, oldalign);
Chart[nIndex]->Canvas->BackMode = OPAQUE;
}
//---------------------------------------------------------------------------
void __fastcall TFormGraph::ChartBeforeDraw(TObject *Sender)
{
for( int i = 0 ; i<CHART_CNT ; i++ )
{
if( g_PopupItemStatus.CHK_COMMON[i] ) // 동적 생성한 팝업메뉴의 아이템의 상태 bool형
{
ChartFontDraw(i);
}
}
}
|