Canvas에서 크라우드소싱 프로젝트 만들기 - 페이지 8

 
o_O :

확인.

CFrame으로 명확합니다.

---

GUI 블록이 각각 고유한 비트맵으로 표시될 때 문제가 해결되었음을 알았습니다.

독자와 이미 생각하기 시작한 독자에게 중요한 점:
작업은 모든 GUI 요소의 렌더링과 함께 하나의 비트맵에서만 이루어져야 합니다. z 순서를 고려합니다.
이 경우 렌더링 기회가 더 많아집니다. (그림자, 그라디언트 등)
그리고 제어가 단순화됩니다(MT 개체 수준으로 이동하지 않음)

IMHO, 각각의 개별 응용 프로그램 창(대화 상자)에는 차트에 자체 비트맵과 개체가 있어야 합니다(여러 Expert Advisors 또는 표시기가 하나의 비트맵 리소스를 "강간"하는 경우를 고려해서는 안 됩니다).
이 경우 창의 그림자를 비트맵의 알파 채널로 구현하여 이 그림자의 렌더링에 대한 계산 부하를 제거할 수 있습니다.
별도 창의 모든 GUI 요소는 Z 순서와 중첩을 고려하여 비트맵에 그려집니다(GUI 개체의 중첩이 올바르게 호출되는 것이 무엇인지 모르겠습니다)

CHARTEVENT_MOUSE_MOVE를 통해 마우스 이벤트를 추적합니다. 저는 제 프로젝트 에서 그렇게 했지만 브레이크를 찾지 못했습니다.
마우스 입력의 품질을 잃지 않고 다른 이벤트를 사용할 수 없었습니다.
 
MQL 작업을 위해 마크업과 이벤트가 텍스트 파일(예: XML)로 설명될 때 GUI 라이브러리를 WPF의 아날로그로 가져오고 싶습니다.

나에게 남은 것은 텍스트 파일의 설명에 따라 GUI 엔진이 호출할 이벤트를 구현하는 것뿐입니다.
 
Zorro :
IMHO, 각각의 개별 응용 프로그램 창(대화 상자)에는 차트에 자체 비트맵과 개체가 있어야 합니다(여러 Expert Advisors 또는 표시기가 하나의 비트맵 리소스를 "강간"하는 경우를 고려해서는 안 됩니다).
이 경우 창의 그림자를 비트맵의 알파 채널로 구현하여 이 그림자의 렌더링에 대한 계산 부하를 제거할 수 있습니다.
별도 창의 모든 GUI 요소는 Z 순서와 중첩을 고려하여 비트맵에 그려집니다(GUI 개체의 중첩이 올바르게 호출되는 것이 무엇인지 모르겠습니다)

모든 것이 정확합니다.

나는 "각 대화"뿐만 아니라 특히 하나의 전문가/지표인 하나의 비트맵에 대해 추가할 것입니다. 더 많은 것이 가능하지만 이는 인코더의 재량에 달려 있습니다.

비트맵에 작업 대화 상자가 있는 경우 해당 대화 상자에 모달 창을 추가하거나 동일한 비트맵 근처에 다른 대화 상자를 추가하는 것은 기술의 문제이며 지금은 중요하지 않다고 생각합니다.

우리는 먼저 특정 창, 위치 등 없이 추상적인 모델을 만듭니다.

그러면 모든 구덩이와 다양한 행동을 덮을 수 있습니다.

 
o_O :

안녕하세요 코더입니다.

정말 유용한 일을 하는 흥미로운 작업이 있고, 크라우드소싱이 좋은 선택이 될 것이라고 생각합니다.
첫째, 작업의 결과는 초기 단계의 모든 사람에게 제공됩니다. 둘째, MQL을 사용하여 새로운 것을 해보자. 그리고 아마도 우리는 MT 개발자들에게 새로운 것을 요구할 것입니다.

----

그래서 첫 번째이자 기본 작업입니다.

1. 버튼 클래스를 만들어야 합니다(기존의 것과 혼동되지 않도록 GButton, 접두사 G).
- 버튼은 여전히 텍스트로 간단합니다(추가 그림 없음).
- 캔버스의 일부 영역에 버튼이 그려집니다.
- 버튼에 클릭 이벤트가 있습니다.



---
시간이 지남에 따라 bitbucket에서 코드를 발행할 것입니다.

나는 관심을 가지고 따르고 있으며 약간 개입할 것입니다. imho 개발자(나 같은)는 이 GUI가 터미널을 통해서만 그릴 수 있는 것이 아닌 경우 GUI 군중에 투자할 것입니다. 설명하겠습니다. 아름다운 인터페이스, 훌륭합니다. 판매를 위한 플러스 요소입니다. 하지만 지금까지는 리소스를 소모하지 않습니다. 백엔드를 전환할 수 있는 GUI 라이브러리가 있으면 이상적입니다. 예를 들어 리소스가 유감스럽지는 않지만 캔버스에 터미널이 그려지도록 하십시오(이것은 모든 종류의 데모/마켓입니다). 그리고 심각한 문제가 발생하면 비트맵에서 빠른 방법으로 그림을 그립니다. 그리기에 더 쉽게 대처할 수 있는 모든 종류의 카이로(OpenGL은 말할 것도 없고)도 있습니다.

일반적으로 별도의 응용 프로그램에서 설계되고 예를 들어 XML로 가져온 GUI를 갖는 것이 이상적입니다. Expert Advisor에서 버튼과 다이얼로그 폼의 위치를 설명하는 것은 요점이 아닙니다.
 
예를 들면 다음과 같습니다.

마크업:
 <sample>
   <window
     name= 'Sample'
     caption= 'Sample'
     x= 0
     y= 0
     width= 320
     height= 240
     OnClose= 'CloseApp' >

     < button caption= 'Exit' x y width height OnClick= 'ButtonExitClick' />     

   </window>

</sample>
이벤트 구현:
 class SampleCloseAction : public CloseAction
  {
public :
               SampleCloseAction() { SetActionName( "CloseApp" ); }
   virtual int Execute() { Print( 'Bye' ); return ( 0 ); }
  };

class ButtonExitAction : public ButtonClickAction
  {
public :
               ButtonExitAction() { SetActionName( "ButtonExitClick" ); }
   virtual int Execute() { GUI::WindowClose( 'Sample' ); return ( 0 ); }
  };

BaseAction *actions[];

actions[ 0 ]= new SampleCloseAction;
actions[ 1 ]= new ButtonExitAction;

GUI::WindowCreate( 'Sample' ,actions);
 
Maxim Kuznetsov :

일반적으로 별도의 응용 프로그램에서 설계되고 예를 들어 XML로 가져온 GUI를 갖는 것이 이상적입니다. Expert Advisor에서 버튼과 다이얼로그 폼의 위치를 설명하는 것은 요점이 아닙니다.

승부차기)

요소를 생성한 후 수행할 첫 번째 작업에 도달했습니다.

 
Maxim Kuznetsov :
일반적으로 별도의 응용 프로그램에서 설계되고 예를 들어 XML로 가져온 GUI를 갖는 것이 이상적입니다. Expert Advisor에서 버튼과 다이얼로그 폼의 위치를 설명하는 것은 요점이 아닙니다.
이 경우 첫 번째 단계는 빠르고 좋은 XML 파서를 작성하는 것입니다. Vesch는 경제에서 매우 필요합니다. 나 자신은 CodeBase의 한 옵션을 사용하는데, 특히 새 빌드에서 특정 작업의 속도가 엄청나게 느려집니다. 나는 이미 이 파서를 패치와 목발에 모두 가지고 있습니다. 일반적으로 좋은 파서를 작성하십시오. 모두를 행복하게 만드십시오.
 
Vasiliy Sokolov :
이 경우 첫 번째 단계는 빠르고 좋은 XML 파서를 작성하는 것입니다. Vesch는 경제에서 매우 필요합니다. 나 자신은 CodeBase의 한 옵션을 사용하는데, 특히 새 빌드에서 특정 작업의 속도가 엄청나게 느려집니다. 이 파서는 내 패치와 목발에 모두 있습니다. 일반적으로 좋은 파서를 작성하십시오. 모두를 행복하게 만드십시오.
작동하고 완전히 그려진 슬라이더를 만드는 방법을 알고 있습니까? 일반적으로 적어도 ... 일반적인 개념을 배우고 싶습니다.
 
Реter Konow :
작동하고 완전히 그려진 슬라이더를 만드는 방법을 알고 있습니까? 일반적으로 적어도 ... 일반적인 개념을 배우고 싶습니다.
유감스럽게도 조언을 드릴 수 없습니다. 이것은 일반 프리미티브를 기반으로 만들어지더라도 다소 복잡한 요소입니다.
 
Реter Konow :
작동하고 완전히 그려진 슬라이더를 만드는 방법을 알고 있습니까? 일반적으로 적어도 ... 일반적인 개념을 배우고 싶습니다.

CCanvas 클래스 를 살펴보십시오. 모든 렌더링 프리미티브를 사용할 수 있습니다.

두 번째로 - 요소에 대한 bmp를 업로드하고 캔버스에서 BitBlt로 때릴 수 있습니다.

사유: