記事"CCanvas クラスを知る透明なオブジェクトの描画方法"についてのディスカッション - ページ 3 123456789 新しいコメント Denis Kirichenko 2015.12.18 14:19 #21 ウラジミール、僕はキャンバスが苦手なんだ...。 キャンバスにいろいろな形を描いて、それを重ね合わせます。ブレンドせずに色を 元のままにするにはどうすればいいでしょうか?COLOR_FORMAT_XRGB_NOALPHA を設定したのですが、混色してしまいます :-((.しかし、こんなバリエーションもある。CDialogタイプのダイアログにCPictureタイプの画像が添付されています。それはCCanvas型のリソースにリンクされています。後者はウィンドウにバインドされずに作成されます。 Vladimir Karputov 2015.12.19 07:08 #22 Dennis Kirichenko: ウラジミール、僕はキャンバスが苦手なんだ...。 キャンバスにいろいろな形を描いて、それを重ね合わせます。ブレンドせずに色を 元のままにするにはどうすればいいでしょうか?COLOR_FORMAT_XRGB_NOALPHA を設定したのですが、ブレンドされてしまいます :-((...キャンバスに描かれた色(仮に "トップ "または最後と呼ぶ)は、先にキャンバスに描かれた色に置き換わります。//+------------------------------------------------------------------+ //|canvas+xor.mq5||キャンバス //|Copyright © 2015, Vladimir Karputov | //|http://wmua.ru/slesar/|( 英語 //+------------------------------------------------------------------+ #property copyright "Copyright © 2015, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" #property description "The script draws overlapping areas on canvas" //--- スクリプトの起動時に、入力パラメータのウィンドウを表示する。 #property script_show_inputs #include <Canvas\Canvas.mqh> //--- 入力 input uchar alfa=150; // 色の透明度を管理するアルファチャンネル //--- チャートの幅と高さを可変にする。 int ChartWidth=-1; int ChartHeight=-1; //+------------------------------------------------------------------+ //| スクリプト番組開始機能| //+------------------------------------------------------------------+ void OnStart() { //--- チャートの幅と高さ ChartWidth=ChartWidthInPixels(); ChartHeight=ChartHeightInPixelsGet()-50; //--- キャンバスを作成する COLOR_FORMAT_XRGB_NOALPHA CCanvas canvas_XARGB_NORMALIZE; if(!canvas_XARGB_NORMALIZE.CreateBitmapLabel("canvas_XARGB_NORMALIZE",0,0, ChartWidth,ChartHeight,COLOR_FORMAT_ARGB_NORMALIZE)) { Print("Error creating canvas: ",GetLastError()); return; } canvas_XARGB_NORMALIZE.Erase(ColorToARGB(clrAqua,255)); //--- 矩形 #1 を作成する canvas_XARGB_NORMALIZE.FillRectangle(ChartWidth/20,ChartHeight/20, 10*ChartWidth/20,10*ChartHeight/20, ColorToARGB(clrBlue,alfa)); canvas_XARGB_NORMALIZE.Update(); //--- 3秒間待つ Sleep(3000); //--- 長方形を作る #2 canvas_XARGB_NORMALIZE.FillRectangle(7*ChartWidth/20,7*ChartHeight/20, 16*ChartWidth/20,16*ChartHeight/20, ColorToARGB(clrGreen,alfa)); canvas_XARGB_NORMALIZE.Update(); //--- 3秒間待つ Sleep(3000); } //+------------------------------------------------------------------+ //| チャート・プロパティの幅| //+------------------------------------------------------------------+ int ChartWidthInPixels(const long chart_ID=0) { //--- プロパティ値を取得するための変数を準備する。 long result=-1; //--- エラー値をリセットする ResetLastError(); //--- プロパティ値を受け取る if(!ChartGetInteger(chart_ID,CHART_WIDTH_IN_PIXELS,0,result)) { //--- エキスパートジャーナルにエラーメッセージを表示する。 Print(__FUNCTION__+", Error Code = ",GetLastError()); } //--- チャート・プロパティの値を返す。 return((int)result); } //+------------------------------------------------------------------+ //| チャート・プロパティの高さ| //+------------------------------------------------------------------+ int ChartHeightInPixelsGet(const long chart_ID=0,const int sub_window=0) { //--- プロパティ値を取得するための変数を準備する。 long result=-1; //--- エラー値をリセットする ResetLastError(); //--- プロパティ値を受け取る if(!ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result)) { //--- エキスパートジャーナルにエラーメッセージを表示する。 Print(__FUNCTION__+", Error Code = ",GetLastError()); } //--- チャート・プロパティの値を返す。 return((int)result); } //+------------------------------------------------------------------+ ファイル: canvas3xor.mq5 4 kb Denis Kirichenko 2015.12.19 10:00 #23 ウラジミール、どうもありがとう!ColorToARGB()の変換を見落としていました。 Vladimir Karputov 2015.12.19 10:08 #24 Dennis Kirichenko:ウラジミール、どうもありがとう!ColorToARGB()の変換を見落としていました。 どういたしまして :) . Jorge Fernando De Los Rios De Los Rios 2016.05.30 12:36 #25 この記事は素晴らしいと思います。座標x1,x2,y1,y2で画面上に矩形を作るにはどうしたらいいでしょうか?x1 = 時間[1]x2 = 時間[0]y1 = オープン[1]y2 = Close[1] Vladimir Karputov 2016.05.30 12:39 #26 Jorge Fernando De Los Ríos De Los Ríos:この記事は素晴らしいと思います。座標x1,x2,y1,y2で画面上に矩形を作るにはどうしたらいいでしょうか?x1 = 時間[1]x2 = 時間[0]y1 = オープン[1]y2 = Close[1]クラスCCanvas?追伸:CCanvas.CreateBitmapを 使う:チャート・オブジェクトにバインドされたグラフィカル・リソースを作成します。1.現在のチャートのメイン・ウィンドウにグラフィカル・リソースを作成します。bool CreateBitmap( const string 名前を指定します、 // name const datetimetime、 // 時間 const doubleprice、 // 価格 constintwidth、 // 幅 const int 高さ、 // 高さ ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA// フォーマット );こうして、キャンバスの一角をバインドできるようになる。ただし、幅と高さはすべてピクセルで設定されます。 Discussion of article "Studying エキスパートアドバイザー - 雑多な質問 コーディングのヘルプ Jorge Fernando De Los Rios De Los Rios 2016.05.30 16:13 #27 もっと簡単に練習してみよう。円は価格と一緒に動くが、なぜY軸に動かないのか?これがコードだ。void OnStart() { int ChartWidth=ChartWidthInPixels(); int ChartHeight=ChartHeightInPixelsGet(); CCanvas pepe; int t1,t0,p1,p0; ChartTimePriceToXY(0,0,Time[1],Open[1],t1,p1); ChartTimePriceToXY(0,0,Time[0],Close[1],t0,p0); pepe.CreateBitmapLabel("canvas_XRGB_NOALPHA",0,0,ChartWidth,ChartHeight,COLOR_FORMAT_ARGB_RAW); pepe.Erase(0); pepe.FillCircle(t0,p0,25,ColorToARGB(clrBlue,255)); pepe.Update(); return(rates_total); } Vladimir Karputov 2016.05.30 16:28 #28 Jorge Fernando De Los Ríos De Los Ríos:もっと簡単に練習してみよう。円は価格と一緒に動くが、なぜY軸に動かないのか?これがそのコードだ。 このスクリプトはコンパイルされていない。このスクリプトはコンパイルされていない。 Vladimir Karputov 2016.05.30 16:39 #29 Jorge Fernando De Los Ríos De Los Ríos:もっと簡単に練習してみよう。円は価格と一緒に動くが、なぜY軸に動かないのか?これがコードだ。"時間[]", "終値[]"- の間違いです。MQL5にはそのような変数はありません! Artyom Trishkin 2016.05.30 16:57 #30 Karputov Vladimir: "タイム[]", "クローズ[]"- の間違いです。MQL5にはそのような変数はない! MQL4 ;) 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
キャンバスにいろいろな形を描いて、それを重ね合わせます。ブレンドせずに色を 元のままにするにはどうすればいいでしょうか?
COLOR_FORMAT_XRGB_NOALPHA を設定したのですが、混色してしまいます :-((.
しかし、こんなバリエーションもある。CDialogタイプのダイアログにCPictureタイプの画像が添付されています。それはCCanvas型のリソースにリンクされています。後者はウィンドウにバインドされずに作成されます。
ウラジミール、僕はキャンバスが苦手なんだ...。 キャンバスにいろいろな形を描いて、それを重ね合わせます。ブレンドせずに
色を 元のままにするにはどうすればいいでしょうか?
COLOR_FORMAT_XRGB_NOALPHA を設定したのですが、ブレンドされてしまいます :-((
...
キャンバスに描かれた色(仮に "トップ "または最後と呼ぶ)は、先にキャンバスに描かれた色に置き換わります。
ウラジミール、どうもありがとう!
ColorToARGB()の変換を見落としていました。
ウラジミール、どうもありがとう!
ColorToARGB()の変換を見落としていました。
クラスCCanvas?
追伸:CCanvas.CreateBitmapを 使う:
チャート・オブジェクトにバインドされたグラフィカル・リソースを作成します。
1.現在のチャートのメイン・ウィンドウにグラフィカル・リソースを作成します。
bool CreateBitmap(
const string 名前を指定します、 // name
const datetimetime、 // 時間
const doubleprice、 // 価格
constintwidth、 // 幅
const int 高さ、 // 高さ
ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA// フォーマット
);
こうして、キャンバスの一角をバインドできるようになる。ただし、幅と高さはすべてピクセルで設定されます。
もっと簡単に練習してみよう。円は価格と一緒に動くが、なぜY軸に動かないのか?
これがコードだ。
もっと簡単に練習してみよう。円は価格と一緒に動くが、なぜY軸に動かないのか?
これがそのコードだ。
もっと簡単に練習してみよう。円は価格と一緒に動くが、なぜY軸に動かないのか?
これがコードだ。
"タイム[]", "クローズ[]"- の間違いです。MQL5にはそのような変数はない!