멋지다, 확실히!
그리고 유용한 것들에도 사용할 수 있습니다 ;)
멋지다, 확실히!
그리고 유용한 것들에도 사용할 수 있습니다 ;)
사람들이 유용한 일에 캔버스를 사용하기 시작하려면 먼저 쓸모없는 것을 시연하는 것부터 시작해야 합니다. :))
컴파일하기 전에 m_pixels[] 배열을 protected:에서 Canvas.mqh 파일의 public으로 전송해야 합니다.
SB에서 아무 것도 변경할 수 없습니다.
class CCanvas2 : public CCanvas { private : int Pos; public : CCanvas2* operator []( const int iPos ) { this .Pos = iPos; return (& this ); } void operator =( const uint Color ) { this .m_pixels[ this .Pos] = Color; } };
CCanvas2 C; //.. // C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]); C[pos] =XRGB(h[ int (d* 11520 )],h[ int (d* 17920 )],h[ int (d* 6400 )]);
SB에서 아무 것도 변경할 수 없습니다.
시원한! :))
그러나 불행히도 그것은 무료가 아닙니다.
확인했습니다. MT5의 전반적인 감속은 ~11%였습니다.
시원한! :))
그러나 불행히도 그것은 무료가 아닙니다.
확인했습니다. MT5의 전반적인 감속은 ~11%였습니다.
귀하의 경우 CCanvas에서 1%가 사용됩니다. CCanvas 없이 사용해 보세요. 코드가 조금 더 복잡하지 않고 속도가 훨씬 더 빨라집니다.
귀하의 경우 CCanvas에서 1%가 사용됩니다. CCanvas 없이 사용해 보세요. 코드가 조금 더 복잡하지 않고 속도가 훨씬 더 빨라집니다.
물론 CCanvas 클래스 없이도 할 수 있습니다. 그러나 코드가 증가하고 속도가 향상되지 않습니다. 사실, CCanvas 클래스에서 저는 m_pixels[] 그래픽 리소스의 포인트 배열만 사용합니다(또한 Update() 및 Destroy() 함수도 사용하지만 저장하지 않기 때문에 무시할 수 있습니다. ).
그리고 어레이는 또한 아프리카의 어레이입니다. 어떻게 속도를 높일 수 있습니까? 안 돼요. CCanvas 클래스는 리소스 생성, 업데이트(더 정확하게는 재생성) 및 삭제할 때 일부 루틴을 처리합니다.
아니면 C.m_pixels[]가 직접 배열 액세스 로 컴파일되지 않는다는 말씀입니까? 옳다고 생각합니다. 거기에 어떤 중간 움직임도 없이. 아니면 내가 틀렸어?
그리고 이 클래스의 개발자가 CreateBitmapLabel을 클래스 자체의 생성자에 밀어넣는 것이 훨씬 더 논리적일 것입니다. 매개변수 없이 클래스의 새 인스턴스를 생성하면 창 크기로 캔버스가 생성되고(저의 경우처럼), 원하는 경우 클래스의 인스턴스를 생성할 때 매개변수를 지정할 수 있습니다. 개인적으로는 그냥 그랬습니다.
물론 CCanvas 클래스 없이도 할 수 있습니다. 그러나 코드가 증가하고 속도가 향상되지 않습니다. 사실, CCanvas 클래스에서 저는 m_pixels[] 그래픽 리소스의 포인트 배열만 사용합니다(또한 Update() 및 Destroy() 함수도 사용하지만 저장하지 않기 때문에 무시할 수 있습니다. ).
그리고 어레이는 또한 아프리카의 어레이입니다. 어떻게 속도를 높일 수 있습니까? 안 돼요. CCanvas 클래스는 리소스 생성, 업데이트(더 정확하게는 재생성) 및 삭제할 때 일부 루틴을 처리합니다.
아니면 C.m_pixels[]가 직접 배열 액세스 로 컴파일되지 않는다는 말씀입니까? 옳다고 생각합니다. 거기에 어떤 중간 움직임도 없이. 아니면 내가 틀렸어?
CCanvas - ResourceCreate 래퍼. 따라서 예를 들어 이미 배열 형태로 20개의 기성품 사진이 있습니다. 캔버스를 통해 변경하려면 값비싼 ArrayCopy + Update를 지속적으로 수행해야 합니다.
그리고 CCanvas 없이 이 작업을 수행하면 모든 것이 ResourceCreate+ChartRerdraw로만 생성됩니다. 코드베이스에 다이나믹 드로잉으로 여러 작품을 업로드했습니다. CCanvas가 좋지 않다는 것이 분명했습니다.
물론 도움이 될 것이지만 끔찍한 브레이크가 있을 것입니다. 첫째, 함수 호출은 더 이상 무료가 아닙니다. 매개변수가 전송되고 저장되며(PixelSet에서는 참조에 의해서도 발생하지 않음) 모든 레지스터를 스택에 푸시한 다음 다시 가져와야 합니다. 두 번째로 함수 자체에서 X와 Y가 지정된 범위에 속하는지 확인하고 세 번째로 배열 인덱스를 계산합니다. 그리고 저는 이 모든 것이 필요하지 않습니다. 왜냐하면. 인덱스가 이미 있고 내 알고리즘에서 범위를 벗어날 수 없습니다.
CCanvas 클래스를 통해 짧은 코드를 사용하여 사용자 지정 그래픽 의 기능을 효과적으로 시연하는 작업을 스스로 설정했습니다.
그것이 그것에서 나온 것입니다.
이 스크립트는 MQL5와 MQL4에서 모두 작동합니다. MT5에서만 훨씬 빠릅니다.
각 프레임은 고유하고 반복되지 않습니다. 즉, 스크립트는 순환하지 않습니다.
컴파일하기 전에 m_pixels[] 배열을 protected:에서 Canvas.mqh 파일의 public으로 전송해야 합니다.