MetaTrader 5의 그래픽: 캔버스 - 객체 스냅으로 버퍼 내부에 그리기

 

동적인 그래픽을 생성할 수 있는 새로운ResourceCreate 함수가 빌드 619에서 사용 가능합니다.

이 기능을 사용하면 이제 32비트 색(알파 채널 포함)으로 다양한 이미지들을 만들고 차트 객체에 첨부할 수 있습니다.

다음과 같은 프로그램 개발이 가능합니다.

  • 많은 파일들을 만들 필요 없이 아름다운 인터페이스를 빠르게 생성할 수 있습니다.

  • 추가 적인 리소스 파일들(BMP 및 WAV뿐만 아니라)을 # 리소스 "파일 이름" 과 지시문, 런타임에 읽기, 개체에 수정 및 적용
    을 사용하여 EX5 파일에 직접 추가할 수 있습니다.
    ResourceLoad() function은 다음 빌드에서 사용가능 할 것이고 이를 통해 이전에 EX5 파일에 첨부된 리소스를 읽을 수 있을 것입니다.

  • 알파 채널을 사용하여 투명도를 적용해서 차트상에 분석용 그래픽 구성을 적용할 수 있습니다.

    예를 들어 반투명 구름을 그리고 여기에 색상과 채도를 통해 앞으로의 시장의 방향에 대한 예측을 반영할 수 있습니다.

  • 차트상에 무엇이든지 그릴 수 있습니다

곧 우리는 표준 라이브러리에 CCanvas 클래스를 추가할 것입니다. 이 클래스를 사용하면 바인딩된 객체로부터 자체 버퍼에 이미지를 그려서 이미지를 쉽게 다룰 수 있습니다.

다음은 이 클래스가 어떻게 작동하는지를 모여주는 간단한 스크립트입니다(파일이 첨부되어 있습니다).

#include "Canvas.mqh"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   CCanvas can;
//---
   can.Create("MySpace",0,0,512,512,COLOR_FORMAT_ARGB_RAW);
   MathSrand(0);
//---
   for(int i=0;i<10000;i++)
     {
      can.FillRect(MathRand()&255,MathRand()&255,256+(MathRand()&255),256+(MathRand()&255),XRGB(MathRand(),MathRand(),MathRand()));
      can.Circle(MathRand()&511,MathRand()&511,MathRand()&127,XRGB(MathRand(),MathRand(),MathRand()));
      can.Triangle(MathRand()&511,MathRand()&511,MathRand()&511,MathRand()&511,MathRand()&511,MathRand()&511,XRGB(MathRand(),MathRand(),MathRand()));
      //---
      can.Update();
     }
//---
  }