エラー、バグ、質問 - ページ 2063 1...205620572058205920602061206220632064206520662067206820692070...3185 新しいコメント fxsaber 2017.11.05 20:54 #20621 透明度の高いチャンネルを持つbmpオブジェクトが2つあります。それらが互いに重なり合ったとき、いくつかのuint-colourが生成される。各オブジェクトの重ね合わせピクセルのuint-colourがわかっている場合、これらの値を自分で計算するにはどうすればよいのでしょうか。 Andrey Barinov 2017.11.06 05:08 #20622 fxsaber: 透明度の高いチャンネルを持つbmpオブジェクトが2つあります。それらが互いに重なり合ったとき、いくつかのuint-colourが生成される。各オブジェクトの重ね合わせピクセルのuint-colourがわかっている場合、これらの値を自分で計算するにはどうすればよいのでしょうか。static uchar GetA(const uint fromcolor){return(uchar((fromcolor)>>24));} static uchar GetR(const uint fromcolor){return(uchar((fromcolor)>>16));} static uchar GetG(const uint fromcolor){return(uchar((fromcolor)>>8));} static uchar GetB(const uint fromcolor){return(uchar(fromcolor));} static uint ARGBToColor(const uchar a,const uchar r,const uchar g,const uchar b){return((a<<24)|(r<<16)|(g<<8)|(b));} static uint cColor::Mix(const uint bottom,const uint top) { //=============== // if top color is not transparent => no mixing required //=============== if(cColor::GetA(top)==UCHAR_MAX)return(top); //=============== //=============== static uint bottomprev=0; static uint topprev=0; static uint resultprev=0; //=============== //=============== if(bottomprev==bottom && topprev==top)return(resultprev); //=============== //=============== bottomprev=bottom; topprev=top; //=============== //=============== // Get Params of Colors //=============== double topA=(double)cColor::GetA(top); double bottomA=(double)cColor::GetA(bottom); double topR=(double)cColor::GetR(top); double bottomR=(double)cColor::GetR(bottom); double topG=(double)cColor::GetG(top); double bottomG=(double)cColor::GetG(bottom); double topB=(double)cColor::GetB(top); double bottomB=(double)cColor::GetB(bottom); //=============== //=============== // Blend components //=============== uchar newA=uchar(topA+(bottomA*(255.0-topA)/255.0)); uchar newR=uchar((topR*topA/255.0)+(bottomR*bottomA *(255.0-topA)/(255.0*255.0))); uchar newG=uchar((topG*topA/255.0)+(bottomG*bottomA *(255.0-topA)/(255.0*255.0))); uchar newB=uchar((topB*topA/255.0)+(bottomB*bottomA *(255.0-topA)/(255.0*255.0))); //=============== //=============== resultprev=cColor::ARGBToColor(newA,newR,newG,newB); //=============== //=============== // New Color //=============== return(resultprev); //=============== } fxsaber 2017.11.06 05:15 #20623 Andrey Barinov:ありがとうございました。もうひとつ質問です。例えば、5つのオブジェクトが同時に重なった場合、そのペア(上/下)はボトムアップとトップダウンのどちらで作るべきでしょうか? Andrey Barinov 2017.11.06 05:16 #20624 fxsaber:ありがとうございました。すべての(bmp)オブジェクトを同じキャンバスに一度に描画する方が、長い目で見ればシンプルな方法です。 fxsaber 2017.11.06 05:19 #20625 Andrey Barinov: すべての(bmp)オブジェクトを1つのキャンバスに一度に描画する方が、長い目で見ればシンプルな方法です。だから聞いているんです。上記は別の質問です。 Andrey Barinov 2017.11.06 05:22 #20626 fxsaber:ありがとうございました。もうひとつ質問です。例えば、5つのオブジェクトが重なっている場合、ペア(上下)は下から上に描くべきか、上から下に描くべきか。5つのオブジェクトのどのピクセルが交差するかわからないという前提で、下から上へ順番に(zorder)レイヤーで描かなければならないのです。まるで本物のキャンバスに描かれたように。ミックス後、以下のようになります。 fxsaber 2017.11.06 05:28 #20627 Andrey Barinov: 5つのオブジェクトのどのピクセルが重なるのかがすぐには分からないので、下から上へと順番に(zorderのように)レイヤー分けして描いています。まるで本物のキャンバスに描かれたように。混ぜると、こんな感じになります。すごいですねぇ。CCanvasを使っているのか、それともすべて自前のソリューションなのか?長い目で見ると、どちらのアプローチが良いのでしょうか? Andrey Barinov 2017.11.06 05:33 #20628 fxsaber:素晴らしいCCanvasを改良して使っているのですか、それとも完全に独自のソリューションを使っているのですか?長い目で見ると、どちらのアプローチが良いのでしょうか?自分で書かなければならなかったのですが、標準ライブラリから 借用した重要なコード断片(プリミティブな描画アルゴリズム、アンチエイリアスなど)を使っています。グラフィックスを扱うという私の概念にコードの断片を詰め込むことは、私の概念を標準ライブラリに巻き付けるよりも簡単であることが判明しました。 標準ライブラリが「生きている」なら使ってもいいんだけど、今のところGUIには一切適応していない。 fxsaber 2017.11.06 05:38 #20629 Andrey Barinov: 自分で書かなければならなかったのですが、標準ライブラリから コードの一部を大幅に借用しました(プリミティブな描画アルゴリズム、アンチエイリアスなど)。グラフィックスを扱うという私の概念にコードの断片を詰め込むことは、私の概念を標準ライブラリに巻き付けるよりも簡単であることが判明しました。 標準ライブラリが「生きている」なら使ってもいいんだけど、今のところGUIには一切適応していない。なるほど、ありがとうございます。 fxsaber 2017.11.06 07:42 #20630 言語バグ#include <Expert\ExpertSignal.mqh> void OnStart() { CIndicator* a = NULL; CExpertSignal b; b.InitIndicators(a); // 'InitIndicators' - no one of the overloads can be applied to the function call } 1...205620572058205920602061206220632064206520662067206820692070...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
透明度の高いチャンネルを持つbmpオブジェクトが2つあります。それらが互いに重なり合ったとき、いくつかのuint-colourが生成される。各オブジェクトの重ね合わせピクセルのuint-colourがわかっている場合、これらの値を自分で計算するにはどうすればよいのでしょうか。
ありがとうございました。もうひとつ質問です。例えば、5つのオブジェクトが同時に重なった場合、そのペア(上/下)はボトムアップとトップダウンのどちらで作るべきでしょうか?
ありがとうございました。
すべての(bmp)オブジェクトを同じキャンバスに一度に描画する方が、長い目で見ればシンプルな方法です。
すべての(bmp)オブジェクトを1つのキャンバスに一度に描画する方が、長い目で見ればシンプルな方法です。
だから聞いているんです。上記は別の質問です。
ありがとうございました。もうひとつ質問です。例えば、5つのオブジェクトが重なっている場合、ペア(上下)は下から上に描くべきか、上から下に描くべきか。
5つのオブジェクトのどのピクセルが交差するかわからないという前提で、下から上へ順番に(zorder)レイヤーで描かなければならないのです。まるで本物のキャンバスに描かれたように。
ミックス後、以下のようになります。
5つのオブジェクトのどのピクセルが重なるのかがすぐには分からないので、下から上へと順番に(zorderのように)レイヤー分けして描いています。まるで本物のキャンバスに描かれたように。
混ぜると、こんな感じになります。
すごいですねぇ。CCanvasを使っているのか、それともすべて自前のソリューションなのか?長い目で見ると、どちらのアプローチが良いのでしょうか?
素晴らしいCCanvasを改良して使っているのですか、それとも完全に独自のソリューションを使っているのですか?長い目で見ると、どちらのアプローチが良いのでしょうか?
自分で書かなければならなかったのですが、標準ライブラリから 借用した重要なコード断片(プリミティブな描画アルゴリズム、アンチエイリアスなど)を使っています。グラフィックスを扱うという私の概念にコードの断片を詰め込むことは、私の概念を標準ライブラリに巻き付けるよりも簡単であることが判明しました。
標準ライブラリが「生きている」なら使ってもいいんだけど、今のところGUIには一切適応していない。
自分で書かなければならなかったのですが、標準ライブラリから コードの一部を大幅に借用しました(プリミティブな描画アルゴリズム、アンチエイリアスなど)。グラフィックスを扱うという私の概念にコードの断片を詰め込むことは、私の概念を標準ライブラリに巻き付けるよりも簡単であることが判明しました。
標準ライブラリが「生きている」なら使ってもいいんだけど、今のところGUIには一切適応していない。
なるほど、ありがとうございます。