나는 이미 위 의 접근 방식의 단점을 설명했으며 비교하는 팔레트와 일치하면 흰색 선을 예로 사용하여 역시 마찬가지입니다. 다시 말해서.
특정 색상(r1,g1,b1)을 거쳐 검정색(0,0,0)에서 흰색(255,255,255)으로 색상을 매끄럽게 바꾸면 중요한 지표는 R,G,B 3색의 합입니다. 여기 용어에서 벗어나는 것이 좋습니다. 당신은 그것에 혼란스러워 할 수 있습니다 (밝기, 가벼움, 톤 ....)
이상적으로는 이 표시기가 0에서 3*255=765로 선형적으로 변경되어야 한다는 것이 절대적으로 분명합니다. 색상을 중간에서 엄격하게 벗겨내지만 먼저 원래 색상의 합을 계산하고 RGB 합에 따라 그라디언트 배열에 삽입합니다. 따라서 내 흰색 선에는 당신과 달리 중단점이 없습니다.
Nikolai, 알고리즘의 원리를 설명하고 이와 같아야 하지만 다르지 않은 일종의 흰색 선에 대해 이야기할 때까지...
알고리즘이 어떻게 음영으로 분해되는지 이해하지 못하는 것이 분명합니다. 당신은 전체적인 개념이 없습니다. 어딘가에서 빌린 용어와 코드의 혼란 만 ...
Nikolai, 알고리즘의 원리를 설명하고 이와 같아야 하지만 다르지 않은 일종의 흰색 선에 대해 이야기할 때까지...
알고리즘이 어떻게 음영으로 분해되는지 이해하지 못하는 것이 분명합니다. 당신은 전체적인 개념이 없습니다. 어딘가에서 빌린 용어와 코드의 혼란 만 ...
피터, 무슨 소리야? 내가 이해하지 못했다면 어떻게 할 수 있습니까? 알고리즘을 코드로 작성하는 것은 말로 설명하는 것보다 훨씬 쉽습니다. 자, 이 코드의 의미를 이해하셨습니까? 결국, 모든 것이 너무 기초적이고 명확하여 여기에 어떤 주석을 삽입 할 수 있는지조차 이해하지 못합니다.
피터, 무슨 소리야? 내가 이해하지 못했다면 어떻게 할 수 있습니까? 알고리즘을 코드로 작성하는 것은 말로 설명하는 것보다 훨씬 쉽습니다. 자, 이 코드의 의미를 이해하셨습니까? 결국, 모든 것이 너무 기초적이고 명확하여 여기에 어떤 주석을 삽입 할 수 있는지조차 이해하지 못합니다.
이 함수를 예로 사용하여 알고리즘이 작동하는 방식은 다음과 같습니다.
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164union rgb { uint clr; uchar c[ 4 ];};
voidOnStart ()
{
rgb c,C;
uint CLR[];
color clr= clrViolet ;
Gradient( clrWhite , clr, CLR,W.Height/ 2 ); // получаем массив градиента от белого цвета до цвета clr for ( int y= 0 ; y<W.Height/ 2 ; y++) Canvas.LineHorizontal( 0 ,W.Width- 1 ,y, ColorToARGB (CLR[y], 240 )); // выводим на экран
Gradient(clr, clrBlack , CLR,W.Height-W.Height/ 2 ); // получаем массив градиента от цвета clr до черног цвета for ( int y=W.Height/ 2 ; y<W.Height; y++) Canvas.LineHorizontal( 0 ,W.Width- 1 ,y, ColorToARGB (CLR[y-W.Height/ 2 ], 240 )); // выводим на экран в продолжение предыдущего
Canvas.Update();
Sleep ( 30000 );
}
//+------------------------------------------------------------------+void Gradient( uint clr1, uint clr2, uint &arr[], uint size)
{
if (size== 0 ) return ;
ArrayResize (arr,size);
rgb c1,c2;
c1.clr=clr1;
c2.clr=clr2;
double R1=c1.c[ 2 ],G1=c1.c[ 1 ],B1=c1.c[ 0 ];
double R2=c2.c[ 2 ],G2=c2.c[ 1 ],B2=c2.c[ 0 ];
double deltaR=(R2-R1)/(size- 1 );
double deltaG=(G2-G1)/(size- 1 );
double deltaB=(B2-B1)/(size- 1 );
for ( uint i= 0 ;i<size;i++)
{
R1+=deltaR; c1.c[ 2 ]= uchar (R1+ 0.4999 );
G1+=deltaG; c1.c[ 1 ]= uchar (G1+ 0.4999 );
B1+=deltaB; c1.c[ 0 ]= uchar (B1+ 0.4999 );
arr[i]=c1.clr;
}
}
피터, 무슨 소리야? 내가 이해하지 못했다면 어떻게 할 수 있습니까? 알고리즘을 코드로 작성하는 것은 말로 설명하는 것보다 훨씬 쉽습니다. 자, 이 코드의 의미를 이해하셨습니까? 결국, 모든 것이 너무 기초적이고 명확하여 여기에 어떤 주석을 삽입 할 수 있는지조차 이해하지 못합니다.
색상 분해의 개념을 기술하십시오. 알고리즘이 당신의 것이라면 당신은 그것을 잘 알고 있습니다.
다음은 MT5에 대한 내 알고리즘의 결과입니다. 불필요하고 불필요한 장식이 없습니다.
코드는 어떻습니까?
나는 이미 위 의 접근 방식의 단점을 설명했으며 비교하는 팔레트와 일치하면 흰색 선을 예로 사용하여 역시 마찬가지입니다.
다시 말해서.
특정 색상(r1,g1,b1)을 거쳐 검정색(0,0,0)에서 흰색(255,255,255)으로 색상을 매끄럽게 바꾸면 중요한 지표는 R,G,B 3색의 합입니다. 여기 용어에서 벗어나는 것이 좋습니다. 당신은 그것에 혼란스러워 할 수 있습니다 (밝기, 가벼움, 톤 ....)
이상적으로는 이 표시기가 0에서 3*255=765로 선형적으로 변경되어야 한다는 것이 절대적으로 분명합니다. 색상을 중간에서 엄격하게 벗겨내지만 먼저 원래 색상의 합을 계산하고 RGB 합에 따라 그라디언트 배열에 삽입합니다. 따라서 내 흰색 선에는 당신과 달리 중단점이 없습니다.
Nikolai, 알고리즘의 원리를 설명하고 이와 같아야 하지만 다르지 않은 일종의 흰색 선에 대해 이야기할 때까지...
알고리즘이 어떻게 음영으로 분해되는지 이해하지 못하는 것이 분명합니다. 당신은 전체적인 개념이 없습니다. 어딘가에서 빌린 용어와 코드의 혼란 만 ...
코드는 어떻습니까?
아직 모든 것이 준비된 것은 아닙니다. 인정합니다. 플랫폼 간의 차이를 과소평가했습니다. MT5의 알고리즘이 일부 장소에서 작동하고 있습니다. 그러나 문제는 개념이 아니라 코드에만 있습니다.
Nikolai, 알고리즘의 원리를 설명하고 이와 같아야 하지만 다르지 않은 일종의 흰색 선에 대해 이야기할 때까지...
알고리즘이 어떻게 음영으로 분해되는지 이해하지 못하는 것이 분명합니다. 당신은 전체적인 개념이 없습니다. 어딘가에서 빌린 용어와 코드의 혼란 만 ...
피터, 무슨 소리야? 내가 이해하지 못했다면 어떻게 할 수 있습니까? 알고리즘을 코드로 작성하는 것은 말로 설명하는 것보다 훨씬 쉽습니다.
자, 이 코드의 의미를 이해하셨습니까? 결국, 모든 것이 너무 기초적이고 명확하여 여기에 어떤 주석을 삽입 할 수 있는지조차 이해하지 못합니다.
피터, 무슨 소리야? 내가 이해하지 못했다면 어떻게 할 수 있습니까? 알고리즘을 코드로 작성하는 것은 말로 설명하는 것보다 훨씬 쉽습니다.
자, 이 코드의 의미를 이해하셨습니까? 결국, 모든 것이 너무 기초적이고 명확하여 여기에 어떤 주석을 삽입 할 수 있는지조차 이해하지 못합니다.
이 함수를 예로 사용하여 알고리즘이 작동하는 방식은 다음과 같습니다.
피터, 무슨 소리야? 내가 이해하지 못했다면 어떻게 할 수 있습니까? 알고리즘을 코드로 작성하는 것은 말로 설명하는 것보다 훨씬 쉽습니다.
자, 이 코드의 의미를 이해하셨습니까? 결국, 모든 것이 너무 기초적이고 명확하여 여기에 어떤 주석을 삽입 할 수 있는지조차 이해하지 못합니다.
색상 분해의 개념을 기술하십시오. 알고리즘이 당신의 것이라면 당신은 그것을 잘 알고 있습니다.
뭔가 확신을 가지려고 하는 것 같습니다. 반복합니다. 시각화를 할 시간이 없었습니다. 팔레트에 대해 알고리즘을 확인했습니까?
색상 207,255,65에 대한 스크립트 결과입니다.
색상 207,255,65에 대한 스크립트의 결과입니다.
시청 해주셔서 감사합니다. 또한 몇 가지 버그를 발견했습니다. 이제 MT4로 GIF를 만들어 보겠습니다. 잘 작동하지만 몇 가지 색상에 문제가 있습니다.
고화질 gif를 못 구합니다. 여기 스크립트가 있습니다. MT4를 착용하고 모든 것을 있는 그대로 보십시오.
첫 번째 오류를 찾았습니다. 수정했습니다.
다음을 추가했어야 합니다.
모든 주기에서.