色を色合いに分解する機能。 - ページ 2

 
Alexey Viktorov:

CodeBadeの場合は、絶対に国際言語で書くべきです。しかし、なぜロシア語のフォーラムでそれを主張するのでしょうか?

個人的にはこのインターナショナルに嫌悪感を抱いているのですが...。というのも、私は全く知らないので、私たちの母国語であるロシア語よりもずっと分かりやすいからです。

このコードの主な問題点は、デバッグ時にキリル文字がサポートされていないことです。


とか、Alt+Gが効かない(変数定義に移動する)とか。


 
そして、構成する単語は男性的です。
 
Алексей Тарабанов:
そして、構成する単語は男性的です。

そして、構成 語は女性です。

 
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
:

また、CCanvasクラスでこの問題を解決しているのも非常に興味深い。元の色の濃淡をすべて通すにはどうしたらいいのでしょうか。

#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);      } }

グラデーションの計算がハイライトされ、残りは出力です。


ファイル:
Gradient.mq5  4 kb
 
Nikolai Semko:

このようなコードの主な問題点は、デバッグ時にキリル文字がサポートされていないことです。

..

とか、Alt+Gが効かない(変数定義に移動する)とか。

ハッ!

これは、この「ロシアンコード」の非常に重大な欠点である !

Peterさん、コードのデバッグはどのように行っているのですか?ある「ロシア語圏」の変数の値をどのように見ているのか?

* * *

上記で正しく指摘されているように、古くから標準化されているHSLとHLSというシステムがあり、RGBからの転送は標準的な計算式で行われる。それに、Labシステムもあることだし、車輪を再発明する意味はあるのだろうか?

これらの機能をどこに適用できるかは、私にはよくわかりません。これは、地方のプログラマーによくある失敗で、とても面白いプログラムを書いたのに、アプリケーションのデモでつまづいてしまうのです。半年前、確かCanvasを使った授業の発表がありましたね。とても印象的なデモがありました。しかし、私はこれらの機能の使い方を見たことがありません。著者はデモをすると約束しましたが、結局しませんでした。

この手のデモは、「こんなことができるんだ」という自尊心を満たすために作られることが多い印象があります。きっと良いことだと思うのですが...。が、ほとんどの人はアプリケーションに興味があるので、役に立たないのですが、アプリケーションに問題があるのです。

多くの人が小さな便利な添付ファイルを書いています。しかし、今のところ、fxsaberだけが ライブラリを提示しているようですが、これは文字通り誰にとっても非常に有用だと思います。これほどボリュームがあり、しかも一般的に役立つ作品を私は知らない。今回のCanvasの場合、さらに悲しいことに、そのすべてがフォーラムの参加者のどの部分にも役立つような形で適用されるとは思えません。

ソースコードを公開しなくても、具体的な応用例が知りたいですね。

 
Nikolai Semko:

このコードの主な問題点は、デバッグ時にキリル文字がサポートされていないことです。


とか、Alt+Gが効かない(変数定義に移動する)とか。

ニコライ、問題はコードやデバッガではなく、人間関係なんだ。もし私がこのコードに興味を持ったなら、それほど苦労せずに変数名を置き換えて、デバッグがうまくいくでしょう。しかし、外国人が私たちの素晴らしい言語を知らない国際的なものを使うことを要求するのは......。そして、このコードをダウンロードしてテストしないことを要求する...。

 
Georgiy Merts:

ハッ!

これは、この「ロシアンコード」の非常に重大な欠点である !

Peterさん、コードのデバッグはどのように行っているのですか?特定の「ロシア語圏」の変数の値をどのように見ていますか?

* * *

上記で正しく指摘されているように、古くから規格化されているHSLやHLSというシステムがあり、RGBからの遷移は標準的な計算式で行われます。それに、Labシステムというものがあるのだから、車輪を再発明する意味はあるのだろうか?

これらの機能をどこに適用できるかは、私にはよくわかりません。これは、地方のプログラマーによくある失敗で、とても面白いプログラムを書いたのに、アプリケーションのデモでつまづいてしまうのです。半年前、確かCanvasを使った授業の発表がありましたね。とても印象的なデモがありました。しかし、私はこれらの機能の使い方を見たことがありません。著者はデモをすると約束しましたが、結局しませんでした。

この手のデモは、「こんなことができるんだ」という自尊心を満たすために作られることが多い印象があります。きっと良いことだと思うのですが...。が、ほとんどの人はアプリケーションに興味があるので、役に立たないのですが、アプリケーションに問題があるのです。

多くの人が小さな便利な添付ファイルを書いています。しかし、今のところ、fxsaberだけが、文字通り誰にとっても非常に有用だと思われるライブラリを提示していますね。これほどボリュームがあり、しかも一般的に役立つ作品を私は知らない。この場合、Canvasの場合はさらに悲しいことに、そのすべてがフォーラムのどの部分にも役立つような形で適用されるとは思えません。

ソースコードを公開しなくても、具体的な応用例が知りたいですね。

ジョージ 頭の中でコードをデバッグしているんだ。:) いつもそのようにしています。論理的な推論で誤りを探す。Alert()関数には とても助けられています。

MetaEditorのデバッグ機能がないことは、私にとっては問題ではありません。それに順応して、自分なりのエラー検出の方法を見つけています。しかし、グローバルな展開において、他国の 言語(非常に明確ではあるが)しか使えないというのは、本当に障壁 となる。自分でグローバルな開発をしていたら、私のことを理解してくれるはずです。ロシア語は、自分の脳から最大限の生産性を引き出すのに役立ちます。実は、私は2つの言語でプログラミングをしています。ロ シア語60%、英語40%。二カ国語コードは、単言語コードに比べ、記憶に残りやすい。また、読みやすさも向上しています。英語のコード(構文が多い)だけを見ていると、あまり覚えられないし、プログラミングもできない。だからみんな図書館を利用するんです。一方、私は、誰かが発明した基準に固執するよりも、自分自身の読みやすさや暗記しやすさにこだわるので、プログラムを簡単に暗記することができます。そのため、自分一人でいろいろなことをやってきた。

取引プログラムにグラフィックを適用することで、マーケットプレイスでの販売をより魅力的にすることができます。それも大切にしなければならない。それが実用化です。


一般に、テーブル、プログラムの動作制御、オートメーションの設定、情報の出力など、グラフィックはそのためのものです。トレーディングプログラムには必要ないと考えるのはおかしい。

 
Nikolai Semko:

マーカーはグラデーションの計算をする限りハイライトされ、それ以外は画面に出力されます。


ニコライさん、ありがとうございます。カラーを送信して、すべてのシェードを一度に取得することは可能ですか?そのような方法はあるのでしょうか?

 
Nikolai Semko:

マーカーはグラデーション計算のためにハイライトされ、残りの部分は画面に出力されます。


ちなみに、写真から判断すると、ここでの色分解は完全ではありません。半分だけです。白から黒まで、そして特定の色のすべての色調を網羅する必要があります。