Canvasでクラウドソーシングのプロジェクトを作る - ページ 20

 

これらの数式を比較すると、確かに違う結果が出ています。速度も比較してみました。

左半分は3種類のカラーレイヤーで構成され、どこも128の透明度を持つ。色は端末で調合します。

右上のものは、英語のwikiによるとブレンドして1層で作っているそうです。

ロシアのwikiによると、1層で右下。


スクリーンショットによる端末と英語版Wikiの比較(上から端末)


ファイルに保存されたリソースによる計算式の比較(上からの英語表記)


リソースの作成には、色の計算や配列の充填を10回まで行うことに比べれば、おそらくOCLを扱う意味はないでしょう。

PS 良いアイデアのようだ、MTをバンバンフォトショップで加工できる :)

ファイル:
script.mq5  4 kb
 
CCanvasクラスを ご存知の方、そこでグラデーションを作成することが可能かどうか教えてください。例えば、長方形をボタンにする場合?ずっと聞きたかったんです)。
 
Реter Konow:
CCanvasクラスをご存知の方、そこでグラデーションを作成することが可能かどうか教えてください。例えば、長方形をボタンにする場合?ずっと聞きたかったんです)。
ありますね。
 
Artyom Trishkin:
チェックする。

Canvasでボタンを描いた例はありますか?見た記憶がないのですが。すごくかっこいいボタンは見たことがあるのですが、それはソース画像を元にしたもので、完全なカンヴァス描きのものは見たことがありません......。
 
Реter Konow:

カナワで描いたボタンの例はありますか?見た記憶がないのですが。すごくかっこいいボタンは見たことがあるのですが、ソース画像を元にしたもので、完全なカンヴァス描きのものは見たことがありません......。
アナトリーのグラフィックライブラリの説明を読んでみてください - 記憶に間違いがなければ、情報的な要素について。
 
Artyom Trishkin:
Anatolyのグラフライブラリの説明を読んでください - 私の記憶が正しければ、情報要素について。

探してみますね...。
 
見つけた。tooltip 要素はグラデーションを使用します。しかし、グラデーションの線ごとに異なる色と透明度を設定することが可能かどうか、まだ理解していません。kanvasは暇なときにでも見ておくことにします。気になる・・・。
 
Реter Konow:
CCanvasクラスをご存知の方、そこでグラデーションを作成することが可能かどうか教えてください。例えば、長方形をボタンにする場合?ずっと聞きたかったんです)。
ピーターさん、こんにちは。
グラデーションは問題ないですね。
ここでは、すべての色を調べて、変化するグラデーションカラーの正方形を動的に描画するスクリプトの簡単でわかりやすい例を紹介します。
ただ、動作させるためには、Canvas.mqhの配列m_pixels[]をpublicに移動させる必要があります。
public:
   uint              m_pixels[];               // array of pixels
#include <Canvas\Canvas.mqh>
void OnStart()
  {
   CCanvas Grad;

   color col;
   if(!Grad.CreateBitmapLabel(0,0,"Grad",100,100,256,256,COLOR_FORMAT_XRGB_NOALPHA)) Print("Error creating canvas: ",GetLastError());
   for(int r=0; r<256; r++) // red
     {
      int j=0;
      // заполняем цветной градиентный квадрат
      for(int b=0; b<256; b++) // blue
         for(int g=0; g<256; g++) // green
           {
            col=(color)(((r&0x0000FF)<<16)|((g&0x0000FF)<<8)|(b&0x0000FF)); // формируем цвет RGB
            Grad.m_pixels[j]=col; // рисуем точку с текущим цветом
            j++;
           }
      Grad.Update();
      Sleep(20);  // Подождем для плавности
     }
  }
ファイル:
Gradient.mq5  2 kb
 
Nikolai Semko:
ピーターさん、こんにちは。
グラデーションは問題ないですね。
ここでは、すべての色を調べて、グラデーションカラーの正方形を描くスクリプトの簡単な例を紹介します。
ただ、動作させるためには、Canvas.mqhの配列m_pixels[]をpublicに移動させる必要があります。


ニコライさん、こんにちは。

例を挙げてくれてありがとう、でもそういう意味じゃないんだ。言いたいことが明確に伝わらなかった。正方形の枠のことで、正方形をボタンに変えるという意味です。そのためには、フレームのラインを変える必要があります。例えば、上と左の線が明るく、下と右の線が暗い場合、ボタンが 押されており、その逆の場合、ボタンが押されたように見えます。kanvasでどのようにできるのか知りたかったのです。

フレームラインと呼ばれるグラデーション。もしかしたら、これは間違っているかもしれない...。

 
Реter Konow:

ニコライさん、こんにちは。

例を挙げてくれてありがとう、でもそういう意味じゃないんだ。言いたいことが明確に伝わらなかった。正方形の枠のことで、正方形をボタンに変えるという意味です。そのためには、フレームのラインを変える必要があります。例えば、上と左の線が明るく、下と右の線が暗い場合、ボタンが 押されており、その逆の場合、ボタンが押されたように見えます。kanvasでどのようにできるのか知りたかったのです。

フレームラインと呼ばれるグラデーション。もしかしたら、間違っているかもしれない......。


ボタンの画像は、用意されたbmp画像を読み込むか、プログラムによる描画で形成されます(多くのバリエーションがあります)。そして、OnChartEventでマウスイベントを処理するだけで、その画像を変更することができます。