CGraphic 테스트 - 질문 및 제안 - 페이지 4

 
Roman Konopelko :

그것들을 virtual 로 만들어도 CGraphics 클래스의 멤버에 대한 전체 액세스 없이 정상적인 오버로드를 수행할 수 없으므로 그들 모두(대부분)는 protected 로 선언되어야 합니다.

이 *** 플롯 기능은 보호됩니다 .


 
o_O :

이 *** 플롯 기능은 보호됩니다 .

class CGraphic
  {
private :
   CArrayObj         m_arr_curves;
   CCanvas           m_canvas;
   //--- parameters background
   int                m_height;
   int                m_width;
   //--- parameters work space
   int                m_left;
   int                m_right;
   int                m_up;
   int                m_down;
   //--- default parameters work space
   int                m_left0;
   int                m_right0;
   int                m_up0;
   int                m_down0;
   //--- size of dash on the axes
   int                m_mark_size;
   //--- scaling parameters
   double             m_dx;
   double             m_dy;
나는 CGraphic 클래스의 멤버에 대해 이야기했는데, 이제는 모두 비공개이며 상속인의 m_canvas, m_dx, m_dy 및 기타 오버로드 멤버에 액세스하지 않으면 작동하지 않습니다.
 
Roman Konopelko :
나는 CGraphic 클래스의 멤버에 대해 이야기했는데, 이제는 모두 비공개이며 상속인의 m_canvas, m_dx, m_dy 및 기타 오버로드 멤버에 액세스하지 않으면 작동하지 않습니다.

좋아, 그러면 모든 것이 당신의 손에 달려 있습니다) 나는 기다릴 것입니다.

그 동안 일시적으로 로컬 변경

 

일부 기능(모든 곳이 아님)에서 나눗셈이 있으면 0을 확인하지 않습니다.

예를 들어

void CGraphic::CalculateXAxis( void )
  {
...
...
   double x_size=(m_x.Max()-m_x.Min());
   double xf_size=xf2-xf1;
//--- keep scaling parameters  
   m_dx=xf_size/ x_size ;

x.Max() == Min()인 경우 zero_devide가 여기에 발생합니다.

또한 Axis::CalcStepSize / CalcBoundedStepSize / SelectAxisScale 등

 
o_O :

일부 기능(모든 곳이 아님)에서 나눗셈이 있으면 0을 확인하지 않습니다.

예를 들어

void CGraphic::CalculateXAxis( void )
  {
...
...
   double x_size=(m_x.Max()-m_x.Min());
   double xf_size=xf2-xf1;
//--- keep scaling parameters  
   m_dx=xf_size/ x_size ;

x.Max() == Min()인 경우 zero_devide가 여기에 발생합니다.

또한 Axis::CalcStepSize / CalcBoundedStepSize / SelectAxisScale 등

고마워, 내가 고칠게.

많은 검사로 라이브러리에 과부하가 걸리지 않도록 Axis::SelectAxisScal 메서드의 모든 경우를 고려했습니다.

파일:
Axis.mqh  11 kb
 

1. enum ENUM_AXIS_TYPE이(가) 아침에 수정하지 않은 파일인 것 같습니다.

---

2. 이전 페이지에서 ENUM_AXIS_TYPE의 작업을 테스트했습니다.

콜백 함수의 스타일로 ValuesFunctionFormat을 수행하기 때문에 함수에서 일부 void* 매개변수를 반환해야 합니다.

typedef string (*DoubleToStringFunction)( double , void *);

CAxis 에 추가

   DoubleToStringFunction m_values_func;
   void * m_cbdata; // <---

...

// изменить
   void               ValuesFunctionFormat(DoubleToStringFunction func , void * cbdata ) { m_values_func=func; m_cbdata=cbdata; }

// добавить получение этого void*
   void * ValuesFunctionFormatCBData( void )     const { return m_ c bdata ; }


CGraphic:: CalculateXAxis 에서

   DoubleToStringFunction xfunc=m_x.ValuesFunctionFormat();
   void * cbdata=m_x.ValuesFunctionFormatCBData(); // <---

...

         case AXIS_TYPE_CUSTOM:
           {
            m_xvalues[i]=(xfunc== NULL ) ? NULL : xfunc(x, cbdata); // <---


----

이 콜백 매개변수는 arrX 배열의 위치를 알고 있는 객체에 대한 포인터를 전달하는 데 필요합니다.

함수는 본질적으로 정적이며 정확히 무엇을 호출했는지 알 수 없기 때문입니다.


추신.

그리고 이것은 원칙적으로 이미 시계열을 표시한 결과가 이렇습니다.

 
o_O :

그리고 이것은 원칙적으로 이미 시계열을 표시한 결과가 이렇습니다.

차트가 비어있는 순간부터 동영상이나 긴 애니메이션 을 만들어주세요. GIF로 무엇인지 몰랐습니다.
 
fxsaber :
차트가 비어있는 순간부터 동영상이나 긴 애니메이션을 만들어주세요. GIF로 무엇인지 몰랐습니다.

그게 낫다?

이 전문가는 Canvas + CGraphic Roman에서 작동합니다.

이 경우 여러 악기에서 P / L을 구축합니다.
 
o_O :

이 전문가는 Canvas + CGraphic Roman에서 작동합니다.

이 경우 여러 악기에서 P / L을 구축합니다.

이제 더 명확해졌습니다. 십자형(및 아마도 다른 상호 작용) - 이것은 성경 로마서의 내장(필수) 기능입니까, 아니면 상속을 추가했습니까?

SB 그래픽에서 십자형, 확대/축소(양방향) 및 커서 값 강조 표시와 같은 상호 작용 요소를 보고 싶습니다.

저것들. Advisor/indicator를 통해 GraphPlot을 만들고 즉시 이 기능을 얻습니다.

 
fxsaber :

이제 더 명확해졌습니다. 십자형(및 아마도 다른 상호 작용) - 이것은 성경 로마서의 내장(필수) 기능입니까, 아니면 상속을 추가했습니까?

예, 상속에 의해 추가되었습니다.

SB 그래픽에서 십자형, 확대/축소(양방향) 및 커서 값 강조 표시와 같은 상호 작용 요소를 보고 싶습니다.

메인과 소통하겠습니다. 나도 뭔가 필요해.

- 강조 표시(그렇지 않은 경우 최소한 GetNearY/X 함수)가 필요합니다. 강조 표시는 상속으로 구현하는 것이 더 좋습니다. 사람마다 다릅니다.)

- 아직 십자선 자체는 필요하지 않은데, 아직 성경과 아무 관련이 없는 차트 이벤트의 결과이기 때문입니다.

- 픽셀 좌표에 의해 결정되는 스케일 값 획득 - 이것이 필요합니다.

- 주모모는 어렵다. 스크롤바가 없기 때문입니다. 그리고 솔직히 말해서, 나는 그들이 이 수업에 소개되는 것을 원하지 않습니다. 현재 CCanvas만 사용하고 다른 개체를 요구하지 않습니다. 그리고 이것은 매우 좋습니다.
나는 상속에 의해 자체적으로 확대/축소를 구현할 계획이며 스크롤 막대 를 넣고 필요한 만큼 크기를 조정합니다.