インジケーターラインにボリューム効果を付加する - ページ 4 1234567891011 新しいコメント Anatoli Kazharski 2015.01.08 11:23 #31 barabashkakvn: ドットはアンチエイリアスをかけずに描画されます。具体的には、アンチエイリアスをかけてドットを描く「PixelSetAA」 方式を選択しました。PixelSetAAで 線を引いてみてください。PolylineAA メソッドはLineAA メソッドを使用します。LineAA メソッドは、PixelSetAA メソッドを使用しています。一点描画することで、アンチエイリアスの効果を実感することができません。 Vladimir Karputov 2015.01.08 11:38 #32 tol64:PixelSetAAで 線を引いてみてください。いや、効果なし。スムージングの近点がない。鋭い角はレンガのようなもの。 ファイル: CanvasPolylineShadow1_2PixelSetAA.mq5 2 kb Anatoli Kazharski 2015.01.08 11:41 #33 barabashkakvn:いや、効果なし。スムージングの近点がない。鋭い角はレンガのようなもの。 前回の投稿を補足しました。上記の方法がどのように実装されているかに注目し、平滑化が必要な場合に使用する。 Vladimir Karputov 2015.01.08 12:01 #34 tol64: 前回のメッセージに補足をさせていただきました。上記の方法がどのように実装されているかに注目し、スムージングが必要な場合に使用します。 スムージングを使った線画法-PolylineAAは 今のところ触っていません。PixelSetAAについて ヘルプに記載されていることを理解したいです。PixelSetAA-アンチエイリアシングアルゴリズムを使用して点を描画 する.このメソッドはアンチエイリアスをかけて点を描画するので、いくつかの点を連続して描画すると、このような画像になるはずです。でも、スムーズなポイントがつかめないんです。 Anatoli Kazharski 2015.01.08 12:36 #35 barabashkakvn: スムージングで線を引く方法-PolylineAAは 今のところ触っていません。PixelSetAAについて、ヘルプに記載されている内容を理解したい。PixelSetAA-アンチエイリアシングアルゴリズムを使用して点を描画 する.このメソッドはアンチエイリアスをかけて点を描画するので、いくつかの点を連続して描画すると、このような画像になるはずです。でも、スムーズなポイントがつかめないんです。ですから、アンチエイリアスをかけた方法とかけない方法のコードを比較することをお勧めします。このコードは研究用に公開されています。それを理解するためには、これらの手法に使われているアルゴリズムを徹底的に勉強する必要があります。このテーマで記事を書いてもいいくらいです。自分でも読んでみたいと思います。) Andrey Khatimlianskii 2015.01.08 13:53 #36 ドットは平滑化できない、ある意味「素粒子」である ) Vladimir Karputov 2015.01.08 14:12 #37 komposter: ドットは平滑化できない、ある意味「素粒子」なのです ) そこで質問なのですが、2つのメソッド(PixelSetとPixelSetAA)があります。PixelSetAAに とても興味があるのですが、もしかしてドットスムージングの仕組みがわかっていないのでしょうか? Andrey Khatimlianskii 2015.01.08 14:59 #38 barabashkakvn: そこで質問なのですが、2つの方法(PixelSetとPixelSetAA)があります。PixelSetAAに 非常に興味があるのですが、ドットスムージングの仕組みがよくわからないのかも?他のすべてが失敗した場合、ヘルプを読んでください ;)PixelSetは単に点の色を設定するだけです。 Vladimir Karputov 2015.01.08 15:15 #39 ヘルプを読みました。で、「PixelSetAAは 1点でもアンチエイリアスを使った描画をすべきか?意見を聞きたい。 Vladimir Karputov 2015.01.08 15:39 #40 barabashkakvn: ヘルプを読みました。で、「PixelSetAAは 1点でもアンチエイリアスを使った描画をすべきか?意見を聞きたい。答えは、PixelSetAA メソッドは1点でもアンチエイリアスを使用して描画する必要が あり、その1点をアンチエイリアスを使用して描画して います。そのために、CCanvasのコードを調べる必要がありました。//+------------------------------------------------------------------+ //| Draw pixel with antialiasing | //+------------------------------------------------------------------+ void CCanvas::PixelSetAA(const double x,const double y,const uint clr) { static double rr[4]; static int xx[4]; static int yy[4]; //--- preliminary calculations int ix=(int)MathRound(x); int iy=(int)MathRound(y); double rrr=0; double k; double dx=x-ix; double dy=y-iy; uchar a,r,g,b; uint c; //--- no need for anti-aliasing if(dx==0.0 && dy==0.0) { PixelSet(ix,iy,clr); return; } //--- prepare array of pixels xx[0]=xx[2]=ix; yy[0]=yy[1]=iy; if(dx<0.0) xx[1]=xx[3]=ix-1; if(dx==0.0) xx[1]=xx[3]=ix; if(dx>0.0) xx[1]=xx[3]=ix+1; if(dy<0.0) yy[2]=yy[2]=iy-1; if(dy==0.0) yy[2]=yy[2]=iy; if(dy>0.0) yy[2]=yy[2]=iy+1; //--- calculate radii and sum of their squares for(int i=0;i<4;i++) { dx=xx[i]-x; dy=yy[i]-y; rr[i]=1/(dx*dx+dy*dy); rrr+=rr[i]; } //--- draw pixels for(int i=0;i<4;i++) { k=rr[i]/rrr; c=PixelGet(xx[i],yy[i]); a=(uchar)(k*GETRGBA(clr)+(1-k)*GETRGBA(c)); r=(uchar)(k*GETRGBR(clr)+(1-k)*GETRGBR(c)); g=(uchar)(k*GETRGBG(clr)+(1-k)*GETRGBG(c)); b=(uchar)(k*GETRGBB(clr)+(1-k)*GETRGBB(c)); PixelSet(xx[i],yy[i],ARGB(a,r,g,b)); } }クラスで、座標として double 型の数値を渡した場合にのみスムージングが現れ、丸められた値ではなく、「尾」がついていることに気がつきました。200.4、125.6、200.7といったところでしょうか。PixelSetAA メソッドを使ってポイントで描いた放物線ですが、アンチエイリアスがかかった状態で描画が開始されます。 ファイル: CanvasPolylineShadow1_1.mq5 4 kb 1234567891011 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ドットはアンチエイリアスをかけずに描画されます。具体的には、アンチエイリアスをかけてドットを描く「PixelSetAA」 方式を選択しました。
PixelSetAAで 線を引いてみてください。
PolylineAA メソッドはLineAA メソッドを使用します。LineAA メソッドは、PixelSetAA メソッドを使用しています。一点描画することで、アンチエイリアスの効果を実感することができません。
PixelSetAAで 線を引いてみてください。
いや、効果なし。スムージングの近点がない。鋭い角はレンガのようなもの。
いや、効果なし。スムージングの近点がない。鋭い角はレンガのようなもの。
前回のメッセージに補足をさせていただきました。上記の方法がどのように実装されているかに注目し、スムージングが必要な場合に使用します。
このメソッドはアンチエイリアスをかけて点を描画するので、いくつかの点を連続して描画すると、このような画像になるはずです。
でも、スムーズなポイントがつかめないんです。
スムージングで線を引く方法-PolylineAAは 今のところ触っていません。PixelSetAAについて、ヘルプに記載されている内容を理解したい。
このメソッドはアンチエイリアスをかけて点を描画するので、いくつかの点を連続して描画すると、このような画像になるはずです。
でも、スムーズなポイントがつかめないんです。
ですから、アンチエイリアスをかけた方法とかけない方法のコードを比較することをお勧めします。このコードは研究用に公開されています。
それを理解するためには、これらの手法に使われているアルゴリズムを徹底的に勉強する必要があります。
このテーマで記事を書いてもいいくらいです。自分でも読んでみたいと思います。)
ドットは平滑化できない、ある意味「素粒子」なのです )
そこで質問なのですが、2つの方法(PixelSetとPixelSetAA)があります。PixelSetAAに 非常に興味があるのですが、ドットスムージングの仕組みがよくわからないのかも?
他のすべてが失敗した場合、ヘルプを読んでください ;)
PixelSetは単に点の色を設定するだけです。
ヘルプを読みました。で、「PixelSetAAは 1点でもアンチエイリアスを使った描画をすべきか?意見を聞きたい。
答えは、PixelSetAA メソッドは1点でもアンチエイリアスを使用して描画する必要が あり、その1点をアンチエイリアスを使用して描画して います。そのために、CCanvasのコードを調べる必要がありました。
クラスで、座標として double 型の数値を渡した場合にのみスムージングが現れ、丸められた値ではなく、「尾」がついていることに気がつきました。200.4、125.6、200.7といったところでしょうか。
PixelSetAA メソッドを使ってポイントで描いた放物線ですが、アンチエイリアスがかかった状態で描画が開始されます。