CGraphic 테스트 - 질문 및 제안 - 페이지 5 12345678910111213 새 코멘트 fxsaber 2016.12.20 18:48 #41 o_O : - 주모모는 어렵다. 스크롤바가 없기 때문입니다. 그리고 솔직히 말해서, 나는 그들이 이 수업에 소개되는 것을 원하지 않습니다. 현재 CCanvas만 사용하고 다른 개체를 요구하지 않습니다. 그리고 이것은 매우 좋습니다. 나는 상속에 의해 자체적으로 확대/축소를 구현할 계획이며 스크롤 막대를 넣고 필요한 만큼 크기를 조정합니다. 스크롤바 는 악입니다. 마우스와 키보드를 사용하여 밴드 없이 일반 차트를 회전합니다. --- 2016.12.20 19:15 #42 fxsaber : 스크롤바는 악입니다. 마우스와 키보드를 사용하여 밴드 없이 일반 차트를 회전합니다. 스크롤할 차트 이벤트가 없습니다. MQL은 그것들을 보내지 않습니다. 그러나 드래그 앤 드롭으로 마우스를 드래그하고 휠을 돌리지 않고 쉽게 드래그할 수 있습니다. fxsaber 2016.12.20 19:33 #43 o_O : 그러나 드래그 앤 드롭으로 마우스를 드래그하고 휠을 돌리지 않고 쉽게 드래그할 수 있습니다. 예, ZoomPrice를 스크롤하고 확대하겠습니다. --- 2016.12.22 09:08 #44 @로만 코노펠코 #36 은 어떻습니까? 그리고 또 다른 영분할을 찾았습니다. --- 2016.12.22 11:08 #45 (재현하기 위해) 해명할 수 있다 CurveAdd(arrY, CURVE_HISTOGRAM, "P/L"); 배열 arrY에는 1개 또는 0개의 요소가 있습니다. 그런 창녀의 생성자로 판단 m_xmax=m_xmin=0. 왜 그것이 더 제로 디바이드 였습니까? Roman Konopelko 2016.12.22 13:59 #46 o_O : @로만 코노펠코 #36 은 어떻습니까? 그리고 또 다른 영분할을 찾았습니다. #36 에 설명된 것을 구현하고 영분할 오류를 수정했습니다. ValuesFunctionFormat이 변경되지 않은 유일한 것: void ValuesFunctionFormat(DoubleToStringFunction func, void * cbdata) { m_values_func=func; m_cbdata=cbdata; } 그리고 함수에 대한 포인터와 그에 대한 개체에 대한 포인터를 별도로 가져오거나 설정하는 메서드를 구현했습니다. DoubleToStringFunction ValuesFunctionFormat( void ) const { return (m_values_func); } void ValuesFunctionFormat(DoubleToStringFunction func) { m_values_func=func; } void *ValuesFunctionFormatCBData( void ) const { return (m_values_cbdata); } void ValuesFunctionFormatCBData( void *cbdata) { m_values_cbdata=cbdata; } 파일: Axis.mqh 12 kb ColorGenerator.mqh 4 kb Curve.mqh 21 kb Graphic.mqh 86 kb --- 2016.12.25 11:56 #47 캔버스의 색상으로 작업을 수정하십시오. 이제 알파 채널을 고려하지 않습니다. 모든 곳 에서 uint 대신 색상 을 지정합니다. 이 때문에 캔버스에 그릴 때 차트 간격이 도처에 있습니다(색상에서 알파 채널 = 0, 즉 완전히 투명하기 때문에 투명한 격자 및 프레임) 일부 기능에서만 ColorToARGB를 지속적으로 호출하여 수정했습니다. 예를 들어 void CGraphic::CreateBackground( void ) {... //--- create background m_canvas.FillRectangle( 0 , 0 ,m_width,m_up- 1 , ColorToARGB (m_background.clr, 255 )); m_canvas.FillRectangle( 0 ,m_height-m_down+ 1 ,m_width,m_height, ColorToARGB (m_background.clr, 255 )); m_canvas.FillRectangle( 0 ,m_up,m_left- 1 ,m_height-m_down, ColorToARGB (m_background.clr, 255 )); m_canvas.FillRectangle(m_width-m_right+ 1 ,m_up,m_width,m_height-m_down, ColorToARGB (m_background.clr, 255 )); 하지만 왜? 색상을 단위 유형으로 만들고 알파 채널로 즉시 설정해야 하는 경우 여기와 같이(다른 색상 설정 기능에서도) void CGraphic::SetDefaultParameters( void ) {... //--- sets the default values for grid m_grid.clr_line= ColorToARGB ( clrWhiteSmoke ); m_grid.clr_axis_line= ColorToARGB ( clrSilver ); m_grid.clr_frame= ColorToARGB ( clrBlack ); m_grid.clr_background= ColorToARGB ( clrWhite ); ---- 추신. 이 경우 캔버스 자체에 COLOR_FORMAT_XRGB_NOALPHA가 있다는 사실은 중요하지 않습니다. Testing CGraphic - questions 変換関数 - ColorToARGB データ型 - 構造体、クラス、インターフェイス --- 2016.12.31 16:34 #48 터미널 업데이트 1502에서 수정 사항을 확인하기로 결정 그리고 모든 개선 사항은 어디에 있습니까?? ValuesFunctionFormat도 수정된 zerodevide 버그도 아닙니다. ㅋㅋㅋ 와) --- 2017.01.24 10:47 #49 1510을 설치했습니다. ValuesFunctionFormat은 입니다. 그에게는 모든 것이 괜찮습니다. -- @Roman Konopelko 는 문장 #47 을 참조하십시오. CGraphic 코드에서 이것들은 단지 몇 가지 변수와 함수일 뿐입니다. 교체는 어렵지 않습니다. 그러나 렌더링할 때 투명도 문제를 제거합니다. 실제로, 색상 알파 채널에서 = 100% 투명도입니다. 뭐가 잘못 되었 니. Roman Konopelko 2017.01.31 13:46 #50 o_O : @Roman Konopelko 는 문장 #47 을 참조하십시오. CGraphic 코드에서 이것들은 단지 몇 가지 변수와 함수일 뿐입니다. 교체는 어렵지 않습니다. 그러나 렌더링할 때 투명도 문제를 제거합니다. 실제로, 색상 알파 채널에서 = 100% 투명도입니다. 뭐가 잘못 되었 니. CGraphic 클래스에서 요청한 대로 모든 위치에서 색상 유형을 uint로 대체했습니다. 또한 CCanvas 클래스에 주어진 두께로 기본 요소를 그릴 수 있는 새로운 메서드를 추가했습니다. void LineThickVertical( const int x, const int y1, const int y2, const int size, const uint clr, const uint style,ENUM_LINE_END end_style); void LineThickHorizontal( const int x1, const int x2, const int y, const int size, const uint clr, const uint style,ENUM_LINE_END end_style); void LineThick( const int x1, const int y1, const int x2, const int y2, const int size, const uint clr, const uint style,ENUM_LINE_END end_style); void PolylineThick( const int &x[], const int &y[], const int size, const uint clr, const uint style,ENUM_LINE_END end_style); void PolygonThick( const int &x[], const int &y[], const int size, const uint clr, const uint style,ENUM_LINE_END end_style); 혁신에 따라 CCurve는 CCurve의 속성을 확장했습니다. ENUM_LINE_END LinesEndStyle( void ) const { return (m_lines_end_style); } int LinesWidth( void ) const { return (m_lines_width); } void LinesEndStyle(ENUM_LINE_END end_style) { m_lines_end_style=end_style; } void LinesWidth( const int width) { m_lines_width=width; } 이제 선으로 곡선을 그릴 때 선의 굵기와 끝 부분의 스타일을 설정할 수 있습니다. 예시: #include <Graphics\Graphic.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart () { double x[] = { - 100 , - 40 , - 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 120 }; double y[] = { - 5 , 4 , - 10 , 23 , 17 , 18 , - 9 , 13 , 17 , 4 , 9 }; CGraphic graphic; graphic.Create( 0 , "G" , 0 , 30 , 30 , 780 , 380 ); //--- plot curve CCurve *curve=graphic.CurveAdd(x,y,CURVE_LINES); curve.LinesSmooth( true ); curve.LinesStyle( STYLE_DOT ); curve.LinesEndStyle(LINE_END_ROUND); curve.LinesWidth( 10 ); graphic.CurvePlotAll(); graphic.Update(); } 결과: 이러한 방법의 구현은 선의 부드러움 정도가 선택한 필터를 기반으로 하는 Fast Prefiltered Lines 알고리즘을 기반으로 합니다. 필요하시면 더 자세히 쓰겠습니다. 파일: Canvas.mqh 144 kb Axis.mqh 12 kb ColorGenerator.mqh 4 kb Curve.mqh 22 kb Graphic.mqh 86 kb Testing CGraphic - questions CCurve - LinesWidth CCurve - CustomPlotFunction 12345678910111213 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
- 주모모는 어렵다. 스크롤바가 없기 때문입니다. 그리고 솔직히 말해서, 나는 그들이 이 수업에 소개되는 것을 원하지 않습니다. 현재 CCanvas만 사용하고 다른 개체를 요구하지 않습니다. 그리고 이것은 매우 좋습니다.
나는 상속에 의해 자체적으로 확대/축소를 구현할 계획이며 스크롤 막대를 넣고 필요한 만큼 크기를 조정합니다.
스크롤바는 악입니다. 마우스와 키보드를 사용하여 밴드 없이 일반 차트를 회전합니다.
스크롤할 차트 이벤트가 없습니다. MQL은 그것들을 보내지 않습니다.
그러나 드래그 앤 드롭으로 마우스를 드래그하고 휠을 돌리지 않고 쉽게 드래그할 수 있습니다.
그러나 드래그 앤 드롭으로 마우스를 드래그하고 휠을 돌리지 않고 쉽게 드래그할 수 있습니다.
@로만 코노펠코
#36 은 어떻습니까?
그리고 또 다른 영분할을 찾았습니다.
(재현하기 위해) 해명할 수 있다
CurveAdd(arrY, CURVE_HISTOGRAM, "P/L"); 배열 arrY에는 1개 또는 0개의 요소가 있습니다.
그런 창녀의 생성자로 판단 m_xmax=m_xmin=0. 왜 그것이 더 제로 디바이드 였습니까?
@로만 코노펠코
#36 은 어떻습니까?
그리고 또 다른 영분할을 찾았습니다.
#36 에 설명된 것을 구현하고 영분할 오류를 수정했습니다.
ValuesFunctionFormat이 변경되지 않은 유일한 것:
void ValuesFunctionFormat(DoubleToStringFunction func, void * cbdata) { m_values_func=func; m_cbdata=cbdata; }
그리고 함수에 대한 포인터와 그에 대한 개체에 대한 포인터를 별도로 가져오거나 설정하는 메서드를 구현했습니다.
void ValuesFunctionFormat(DoubleToStringFunction func) { m_values_func=func; }
void *ValuesFunctionFormatCBData( void ) const { return (m_values_cbdata); }
void ValuesFunctionFormatCBData( void *cbdata) { m_values_cbdata=cbdata; }
캔버스의 색상으로 작업을 수정하십시오.
이제 알파 채널을 고려하지 않습니다. 모든 곳 에서 uint 대신 색상 을 지정합니다.
이 때문에 캔버스에 그릴 때 차트 간격이 도처에 있습니다(색상에서 알파 채널 = 0, 즉 완전히 투명하기 때문에 투명한 격자 및 프레임)
일부 기능에서만 ColorToARGB를 지속적으로 호출하여 수정했습니다.
예를 들어
{
...
//--- create background
m_canvas.FillRectangle( 0 , 0 ,m_width,m_up- 1 , ColorToARGB (m_background.clr, 255 ));
m_canvas.FillRectangle( 0 ,m_height-m_down+ 1 ,m_width,m_height, ColorToARGB (m_background.clr, 255 ));
m_canvas.FillRectangle( 0 ,m_up,m_left- 1 ,m_height-m_down, ColorToARGB (m_background.clr, 255 ));
m_canvas.FillRectangle(m_width-m_right+ 1 ,m_up,m_width,m_height-m_down, ColorToARGB (m_background.clr, 255 ));
하지만 왜? 색상을 단위 유형으로 만들고 알파 채널로 즉시 설정해야 하는 경우
여기와 같이(다른 색상 설정 기능에서도)
{
...
//--- sets the default values for grid
m_grid.clr_line= ColorToARGB ( clrWhiteSmoke );
m_grid.clr_axis_line= ColorToARGB ( clrSilver );
m_grid.clr_frame= ColorToARGB ( clrBlack );
m_grid.clr_background= ColorToARGB ( clrWhite );
----
추신.
이 경우 캔버스 자체에 COLOR_FORMAT_XRGB_NOALPHA가 있다는 사실은 중요하지 않습니다.
터미널 업데이트 1502에서 수정 사항을 확인하기로 결정
그리고 모든 개선 사항은 어디에 있습니까??
ValuesFunctionFormat도 수정된 zerodevide 버그도 아닙니다.
ㅋㅋㅋ
와)
1510을 설치했습니다.
ValuesFunctionFormat은 입니다. 그에게는 모든 것이 괜찮습니다.
--
@Roman Konopelko 는 문장 #47 을 참조하십시오.
CGraphic 코드에서 이것들은 단지 몇 가지 변수와 함수일 뿐입니다. 교체는 어렵지 않습니다.
그러나 렌더링할 때 투명도 문제를 제거합니다. 실제로, 색상 알파 채널에서 = 100% 투명도입니다. 뭐가 잘못 되었 니.
@Roman Konopelko 는 문장 #47 을 참조하십시오.
CGraphic 코드에서 이것들은 단지 몇 가지 변수와 함수일 뿐입니다. 교체는 어렵지 않습니다.
그러나 렌더링할 때 투명도 문제를 제거합니다. 실제로, 색상 알파 채널에서 = 100% 투명도입니다. 뭐가 잘못 되었 니.
또한 CCanvas 클래스에 주어진 두께로 기본 요소를 그릴 수 있는 새로운 메서드를 추가했습니다.
void LineThickHorizontal( const int x1, const int x2, const int y, const int size, const uint clr, const uint style,ENUM_LINE_END end_style);
void LineThick( const int x1, const int y1, const int x2, const int y2, const int size, const uint clr, const uint style,ENUM_LINE_END end_style);
void PolylineThick( const int &x[], const int &y[], const int size, const uint clr, const uint style,ENUM_LINE_END end_style);
void PolygonThick( const int &x[], const int &y[], const int size, const uint clr, const uint style,ENUM_LINE_END end_style);
int LinesWidth( void ) const { return (m_lines_width); }
void LinesEndStyle(ENUM_LINE_END end_style) { m_lines_end_style=end_style; }
void LinesWidth( const int width) { m_lines_width=width; }
예시:
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
double x[] = { - 100 , - 40 , - 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 120 };
double y[] = { - 5 , 4 , - 10 , 23 , 17 , 18 , - 9 , 13 , 17 , 4 , 9 };
CGraphic graphic;
graphic.Create( 0 , "G" , 0 , 30 , 30 , 780 , 380 );
//--- plot curve
CCurve *curve=graphic.CurveAdd(x,y,CURVE_LINES);
curve.LinesSmooth( true );
curve.LinesStyle( STYLE_DOT );
curve.LinesEndStyle(LINE_END_ROUND);
curve.LinesWidth( 10 );
graphic.CurvePlotAll();
graphic.Update();
}
이러한 방법의 구현은 선의 부드러움 정도가 선택한 필터를 기반으로 하는 Fast Prefiltered Lines 알고리즘을 기반으로 합니다. 필요하시면 더 자세히 쓰겠습니다.