Die Funktion, Farbe in Schattierungen zu zerlegen. - Seite 2

 
Alexey Viktorov:

Für CodeBade sollten Sie unbedingt in einer internationalen Sprache schreiben. Aber warum sollte man in einem russischsprachigen Forum darauf bestehen?

Ich persönlich bin angewidert von dieser internationalen... weil ich es überhaupt nicht kenne und es für mich viel klarer ist als unsere russische Muttersprache.

Das Hauptproblem bei diesem Code ist, dass die kyrillische Schrift beim Debuggen nicht unterstützt wird.


und auch Alt+G funktioniert nicht (zur Variablendefinition gehen).


 
Und der Wortbestandteil ist männlich.
 
Алексей Тарабанов:
Und der Wortbestandteil ist männlich.

Und der Wortbestandteil ist weiblich.

 
HSL
HSL — Википедия
HSL — Википедия
  • ru.wikipedia.org
HSL, HLS или HSI (от англ.  ()) — цветовая модель, в которой цветовыми координатами являются тон, насыщенность и светлота. Следует отметить, что HSV и HSL — две разные цветовые модели (lightness — светлота, что отличается от яркости). L = 1 2 ( M A X + M I N ) {\displaystyle L={\begin{matrix}{\frac...
 

Реter Konow
:

Es ist auch sehr interessant, wie dieses Problem mit der CCanvas-Klasse gelöst wird. Wie kann man alle Schattierungen der ursprünglichen Farbe durch sie hindurch erhalten?

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 union rgb {uint clr; uchar c[4];}; void OnStart()   {    rgb c,cc;    double d=5;    while(!IsStopped())      {       c.c[2]=uchar(127.5*(1+sin(d*1.2))+0.4999); c.c[1]=uchar(127.5*(1+sin(d*1.9))+0.4999); c.c[0]=uchar(127.5*(1+sin(d*2.8))+0.4999); // генерируем новый цвет       cc.clr=c.clr;       double k0,k1,k2;       if(c.c[2]>=c.c[1] && c.c[2]>=c.c[0]) {k2=1; if(c.c[2]==0) {k1=1; k0=1;} else {k1=(double)c.c[1]/c.c[2]; k0=(double)c.c[0]/c.c[2];}}// если Red - максимальный цвет       else if(c.c[1]>=c.c[2] && c.c[1]>=c.c[0]) {k1=1; k2=(double)c.c[2]/c.c[1]; k0=(double)c.c[0]/c.c[1];} // если Green - максимальный цвет       else {k0=1; k2=(double)c.c[2]/c.c[0]; k1=(double)c.c[1]/c.c[0];} // если Blue - максимальный цвет       for(int y=0; y<W.Height; y++)         {          double k=255.0*(double)y/(W.Height-1);          c.c[2]=uchar(k2*k+0.4999);          c.c[1]=uchar(k1*k+0.4999);          c.c[0]=uchar(k0*k+0.4999);          Canvas.LineHorizontal(0,W.Width-1,y,ColorToARGB(c.clr,240));         }       Canvas.FillRectangle(W.Width/2-80,W.Height/2-50,W.Width/2+80,W.Height/2+50,ColorToARGB(cc.clr,240));       Canvas.CurentFont("Tahoma",20,22,ColorToARGB(~cc.clr)); // 20 -  размер шрифта, 22 - межстрочный интервал       Canvas.TextPosition(W.Width/2-70,W.Height/2-40);       Canvas.Comm("Текущий цвет:");       Canvas.Comm("R = "+string(cc.c[2]));       Canvas.Comm("G = "+string(cc.c[1]));       Canvas.Comm("B = "+string(cc.c[0]));       ChartChanged(); // на всякий случай контролируем изменение размеров окна, т.к. это скрипт (в индикаторах и экспертах это происходит автоматически)       Canvas.Update();       d+=0.01;       Sleep(30);      } }

Die Berechnung der Steigung ist hervorgehoben, der Rest ist die Ausgabe.


Dateien:
Gradient.mq5  4 kb
 
Nikolai Semko:

Das Hauptproblem bei einem solchen Code ist, dass die kyrillische Schrift bei der Fehlersuche nicht unterstützt wird.

..

und auch Alt+G funktioniert nicht (zur Variablendefinition gehen).

Ha!

Dies ist ein sehr schwerwiegender Nachteil dieses "russischen" Codes!

Peter, wie debuggen Sie Ihren Code? Wie sieht es mit den Werten bestimmter "russischsprachiger" Variablen aus?

* * *

Wie oben richtig bemerkt wurde, gibt es HSL- und HLS-Systeme, die seit langem standardisiert sind, und die Übertragungen von RGB werden mit Standardformeln vorgenommen. Außerdem gibt es ein Laborsystem, warum sollte man das Rad neu erfinden?

Es ist mir nicht ganz klar, wo diese Funktionen angewendet werden können. Dies ist ein sehr häufiger Fehler lokaler Programmierer - sie schreiben sehr interessante Programme, aber bei der Demonstration der Anwendung gibt es einen Haken. Vor sechs Monaten, so erinnere ich mich, wurde eine Klasse von Arbeiten mit Canvas vorgestellt - es gab eine sehr beeindruckende Demo. Aber ich habe keine Verwendung für diese Funktionen gesehen, der Autor hat versprochen, sie zu demonstrieren, es aber nie getan.

Ich habe den Eindruck, dass die meisten dieser Demos zur Belustigung des eigenen Egos erstellt werden - "schaut mal, wie ich das machen kann". Ich bin sicher, es ist eine gute Sache... aber für die meisten Menschen ist es nutzlos, denn die meisten Menschen sind an der Anwendung interessiert, aber es gibt ein Problem mit der Anwendung.

Viele Leute schreiben kleine nützliche Anhänge. Aber bisher habe ich gesehen, dass nur fxsaber eine Bibliothek vorgestellt hat, die meiner Meinung nach für buchstäblich jeden sehr nützlich ist. Ich kenne kein so umfangreiches, aber allgemein nützliches Werk. In diesem Fall, mit Canvas, ist es sogar noch trauriger - ich kann mir nicht vorstellen, wo das alles in einer Weise angewandt werden könnte, die für irgendeinen erkennbaren Teil des Forenpublikums nützlich wäre.

Ich würde gerne konkrete Anwendungsbeispiele sehen, auch ohne den Quellcode preiszugeben - nur die Idee, wo das alles sinnvoll angewendet werden könnte?

 
Nikolai Semko:

Das Hauptproblem bei diesem Code ist, dass die kyrillische Schrift beim Debuggen nicht unterstützt wird.


und auch Alt+G funktioniert nicht (zur Variablendefinition gehen).

Das Problem, Nikolai, ist nicht der Code oder der Debugger, das Problem sind die Menschen, die Beziehungen. Wenn ich mich für diesen Code interessiere, kann ich die Variablennamen ohne großen Aufwand ersetzen, und das Debugging wird funktionieren. Aber zu verlangen, dass man eine internationale Sprache benutzt, in der die Ausländer unsere großartige Sprache nicht kennen... Und die Forderung, diesen Code nicht herunterzuladen und zu testen...

 
Georgiy Merts:

Ha!

Dies ist ein sehr schwerwiegender Nachteil dieses "russischen" Codes!

Peter, wie debuggen Sie Ihren Code? Wie sehen Sie die Werte der spezifischen "russischsprachigen" Variablen?

* * *

Wie oben richtig bemerkt wurde, gibt es HSL- und HLS-Systeme, die seit langem standardisiert sind, und die Übergänge von RGB werden mit Standardformeln vorgenommen. Außerdem gibt es ein Laborsystem, warum sollte man das Rad neu erfinden?

Es ist mir nicht ganz klar, wo diese Funktionen angewendet werden können. Dies ist ein sehr häufiger Fehler lokaler Programmierer - sie schreiben sehr interessante Programme, aber bei der Demonstration der Anwendung gibt es ein Problem. Vor sechs Monaten, so erinnere ich mich, wurde eine Klasse von Arbeiten mit Canvas vorgestellt - es gab eine sehr beeindruckende Demo. Aber ich habe keine Verwendung für diese Funktionen gesehen, der Autor hat versprochen, sie zu demonstrieren, es aber nie getan.

Ich habe den Eindruck, dass die meisten dieser Demos zur Belustigung des eigenen Egos erstellt werden - "schaut mal, wie ich das machen kann". Ich bin sicher, es ist eine gute Sache... aber für die meisten Menschen ist es nutzlos, denn die meisten Menschen sind an der Anwendung interessiert, aber es gibt ein Problem mit der Anwendung.

Viele Leute schreiben kleine nützliche Anhänge. Aber bisher habe ich gesehen, dass nur fxsaber eine Bibliothek vorgestellt hat, die meiner Meinung nach für buchstäblich jeden sehr nützlich ist. Ich kenne kein so umfangreiches, aber allgemein nützliches Werk. In diesem Fall, mit Canvas, ist es sogar noch trauriger - ich kann mir nicht vorstellen, wo das alles in einer Weise angewendet werden könnte, die für irgendeinen erkennbaren Teil des Forums nützlich wäre.

Ich würde gerne konkrete Anwendungsbeispiele sehen, auch ohne den Quellcode preiszugeben - nur die Idee, wo das alles sinnvoll angewendet werden könnte?

George, ich bin gerade dabei, den Code in meinem Kopf zu debuggen. :) Das habe ich schon immer so gemacht. Ich suche nach Fehlern durch logische Schlussfolgerungen. Die Funktion Alert() hilft mir sehr;

Für mich ist es immer notwendig, nach einer eigenen Lösung zu suchen, und die fehlende Debugging-Funktion von MetaEditor stört mich nicht. Ich habe mich daran gewöhnt und meine eigenen Methoden zur Fehlererkennung gefunden. Aber in einer globalen Entwicklung ist es ein echtes Hindernis , nur die (wenn auch sehr deutliche) Sprache eines anderen zu verwenden. Wenn Sie selbst ein globaler Entwickler wären, würden Sie mich verstehen. Die russische Sprache hilft mir, das Maximum an Produktivität aus meinem eigenen Gehirn herauszukitzeln. Ich programmiere sogar in zwei Sprachen. 60% Russisch und 40% Englisch. Ein zweisprachiger Code ist viel einprägsamer als ein einsprachiger Code. Außerdem ist sie besser lesbar. Wenn man sich nur den englischen Code (mit viel Syntax) ansieht, kann man sich nicht viel merken und nicht viel programmieren. Deshalb benutzt jeder Bibliotheken. Ich hingegen kann mein Programm leicht auswendig lernen, weil es mir wichtig ist, dass es mir leicht fällt, es zu lesen und auswendig zu lernen, und nicht, dass ich mich an die von anderen erfundenen Standards halte. Aus diesem Grund habe ich so viel allein gemacht.

Die Anwendung von Grafiken auf Handelsprogramme macht sie für den Verkauf auf dem Marktplatz attraktiver. Auch darum müssen Sie sich kümmern. Das ist die praktische Anwendung.


Im Allgemeinen sind Tabellen, die Steuerung des Programmverhaltens, das Einrichten von Automatismen, die Ausgabe von Informationen - dafür sind Grafiken gedacht. Es ist seltsam, dass Sie glauben, Handelsprogramme bräuchten das nicht.

 
Nikolai Semko:

Die Berechnung der Steigung wird hervorgehoben, der Rest der Ausgabe wird auf dem Bildschirm angezeigt.


Vielen Dank, Nikolai. Ist es möglich, eine Farbe zu senden und alle Nuancen auf einmal zu erhalten? Gibt es eine solche Methode?

 
Nikolai Semko:

Die Markierung wird für die Berechnung der Steigung hervorgehoben, der Rest der Ausgabe wird auf dem Bildschirm angezeigt.


Nach dem Bild zu urteilen, ist die Farbzerlegung hier übrigens nicht vollständig. Nur die Hälfte davon. Die Palette sollte von absolutem Weiß bis zu absolutem Schwarz reichen und alle Schattierungen einer bestimmten Farbe umfassen.

Grund der Beschwerde: