記事"CCanvas クラスを知る透明なオブジェクトの描画方法"についてのディスカッション - ページ 4 123456789 新しいコメント Vladimir Karputov 2016.05.30 17:21 #31 Artyom Trishkin: MQL4 ;)私はMQL4を歓迎しない。すべての例はMQL5のみです。//+------------------------------------------------------------------+ //|テストmq5 //|著作権© 2016, ウラジーミル・カルプトフ|||Copyright © 2016, Vladimir Karputov //|http://wmua.ru/slesar/|( 英語 //+------------------------------------------------------------------+ #property copyright "Copyright © 2016, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" #include <Canvas\Canvas.mqh> CCanvas m_canvas; // キャンバス・オブジェクト //+------------------------------------------------------------------+ //| スクリプト番組開始機能| //+------------------------------------------------------------------+ void OnStart() { datetime arr_time[]; double arr_open[]; double arr_close[]; if(CopyTime(Symbol(),Period(),0,2,arr_time)==-1) return; if(CopyClose(Symbol(),Period(),0,2,arr_close)==-1) return; if(CopyOpen(Symbol(),Period(),0,2,arr_open)==-1) return; int x1,y1,x2,y2; if(!ChartTimePriceToXY(0,0,arr_time[0],arr_open[0],x1,y1)) Print("Error ",GetLastError()); if(!ChartTimePriceToXY(0,0,arr_time[1],arr_close[0],x2,y2)) Print("Error ",GetLastError()); //x1 = Time[1]; //y1 = Open[1]; //x2 = Time[0]; //y2 = Close[1]; Print("arr_time[0]=",arr_time[0],", arr_open[0]=",arr_open[0]); m_canvas.CreateBitmapLabel("COLOR_FORMAT_ARGB_NORMALIZE",x1,y1,MathAbs(x2-x1),MathAbs(y2-y1),COLOR_FORMAT_ARGB_NORMALIZE); m_canvas.Erase(ColorToARGB(clrBlue,200)); m_canvas.Update(); Sleep(10000); m_canvas.Destroy(); } //+------------------------------------------------------------------+ //| チャートの幅をピクセル単位で取得します。| //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+ そしてスクリプトの結果: Denis Kirichenko 2016.10.16 17:17 #32 ウラジミール、専門家のあなたに質問です。キャンバスの形をしたパネルがあります。そしてチャート上にトレンドラインが描かれています。キャンバスの後ろに隠す方法を教えてください。 メタトレーダー取引プラットフォームのスクリーンショット RTSスプライス、上半期、2016.10.16 JSC ''Otkritie Broker'', MetaTrader 5, デモ Vladimir Karputov 2016.10.16 18:03 #33 Dennis Kirichenko:ウラジミール、専門家のあなたに質問です。キャンバスの形をしたパネルがあります。そしてチャート上にトレンドラインが描かれています。それをキャンバスの後ろに隠すにはどうすればよいでしょうか? 例えば、パネルを壊してもう一度描くとか・・・。 Denis Kirichenko 2016.10.17 00:50 #34 ああ、ありがとう。今のところ、背景にオブジェクトを置くだけのアイデアを思いついたんだけど......。 削除済み 2017.07.29 13:46 #35 Vladimir Karputov: 記事をありがとう。残念ながら、その中のドキュメントへのリンクはすべて壊れています。 Vladimir Karputov 2017.07.29 14:01 #36 Alexey Kozitsyn: 記事をありがとう。残念ながら、その中のドキュメントリンクはすべて壊れています。メッセージありがとうございます - ヘルプは再構築されました。リンクを修正します。 Mikhail Dovbakh 2017.07.29 22:53 #37 Vladimir Karputov:クラスCCanvas?追伸:CCanvas.CreateBitmapを使って ください:チャート・オブジェクトにバインドされたグラフィカル・リソースを作成します。1.現在のチャートのメイン・ウィンドウにグラフィカル・リソースを作成します。bool CreateBitmap( const string 名前を指定します、 // name const datetimetime、 // 時間 const doubleprice、 // 価格 constintwidth、 // 幅 const int 高さ、 // 高さ ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA// フォーマット );こうして、キャンバスの一角をバインドできるようになる。ただし、幅と高さはすべてピクセルで設定されます。ここでロシア語で書いていいのだろうか。というのも、あなたは一方的に指示を出して いるが、実際にはダブルスタンダードを公言しているからだ。 Alexey Petrov 2017.07.31 08:42 #38 Alexey Kozitsyn: 記事をありがとう。残念ながら、その中のドキュメントへのリンクはすべて壊れています。 リンクは修正しました。メッセージをありがとう。 Vladimir Karputov 2017.07.31 08:55 #39 Alexey Petrov: リンクを修正しました。メッセージをありがとう。エラーが残っています。はじめの段落:...CCanvas クラスを使って直接描画を始める前に、色の処理に関するいくつかの定義を学ぶ必要があります。たとえば、透明度とは何か、アルファ・チャンネルとは何か、などです。...項目 "5.1 スクリプト "Illusion.mq5" を作成する"...描かれた円を描きます。円は、キャンバスを塗りつぶした色の上に描かれます(canvas_XRGB_NOALPHA.Erase(ColorToARGB(colr,alpha));)。canvas_XRGB_NOALPHA.CreateBitmapLabel - チャートオブジェクトにバインドされたグラフィックリソースを作成します。キャンバス全体を ARGB フォーマットの色で塗りつぶします。テキストを出力- このキャンバスの画像処理の種類。アルファ・チャンネルが255に等しいARGBフォーマットのテキスト色、つまり出力テキストの色。描画したものをすべて画面に表示させたい場合は、画面をリフレッシュする必要が あります。グラフィック・リソースはチャート・オブジェクトにバインドして作成したので(CreateBitmapLabel メソッド)、Destroy() メソッドを使ってリソースを削除します。... CCanvas クラスを知る透明なオブジェクトの描画方法 MQLアプリケーションでのCCanvasクラスの使用 Konstantin Seredkin 2017.08.17 04:49 #40 はじめまして、皆さん。情報 パネルを、取引のアイコンが上に重ならないようにする方法を教えてください。前景にあるようで、すべてが後ろに描かれているのですが、案件が上に重なっています。void CreateEdit(long chart_id, // チャートID int sub_window, // ウィンドウ(サブウィンドウ)番号 string name, // オブジェクト名 color font_color, // フォントの色 int x_size, // 幅 int y_size, // 高さ int x_distance, // X軸座標 int y_distance, // Y軸座標 long z_order, // 優先順位 color background_color) // 背景色 { // オブジェクトが正常に作成された場合、... if(ObjectCreate(chart_id,name,OBJ_RECTANGLE_LABEL,sub_window,0,0)) { // ...プロパティを設定する ObjectSetInteger(chart_id,name,OBJPROP_CORNER,CORNER_LEFT_UPPER); // グラフの角度を設定する ObjectSetInteger(chart_id,name,OBJPROP_COLOR,font_color); // フォントの色 ObjectSetInteger(chart_id,name,OBJPROP_BGCOLOR,background_color); // 背景色 ObjectSetInteger(chart_id,name,OBJPROP_XSIZE,x_size); // 幅 ObjectSetInteger(chart_id,name,OBJPROP_YSIZE,y_size); // 高さ ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_distance); // X座標を設定する ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_distance); // Y座標の設定 ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,false); // FALSEの場合、オブジェクトは選択できない ObjectSetInteger(chart_id,name,OBJPROP_ZORDER,z_order); // オブジェクトの優先順位 ObjectSetInteger(chart_id,name,OBJPROP_READONLY,true); // 読み取り専用 ObjectSetInteger(chart_id,name,OBJPROP_ALIGN,ALIGN_LEFT); // 左揃え //--- 前景(false)または背景(true)に表示する。 ObjectSetInteger(chart_id,name,OBJPROP_BACK,false); ObjectSetString(chart_id,name,OBJPROP_TOOLTIP,"\n"); // もし"˶n "ならツールチップはない。 } } 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MQL4 ;)
私はMQL4を歓迎しない。すべての例はMQL5のみです。
そしてスクリプトの結果:
ウラジミール、専門家のあなたに質問です。
キャンバスの形をしたパネルがあります。そしてチャート上にトレンドラインが描かれています。キャンバスの後ろに隠す方法を教えてください。
メタトレーダー取引プラットフォームのスクリーンショット
RTSスプライス、上半期、2016.10.16
JSC ''Otkritie Broker'', MetaTrader 5, デモ
ウラジミール、専門家のあなたに質問です。
キャンバスの形をしたパネルがあります。そしてチャート上にトレンドラインが描かれています。それをキャンバスの後ろに隠すにはどうすればよいでしょうか?
記事をありがとう。残念ながら、その中のドキュメントリンクはすべて壊れています。
メッセージありがとうございます - ヘルプは再構築されました。リンクを修正します。
クラスCCanvas?
追伸:CCanvas.CreateBitmapを使って ください:
チャート・オブジェクトにバインドされたグラフィカル・リソースを作成します。
1.現在のチャートのメイン・ウィンドウにグラフィカル・リソースを作成します。
bool CreateBitmap(
const string 名前を指定します、 // name
const datetimetime、 // 時間
const doubleprice、 // 価格
constintwidth、 // 幅
const int 高さ、 // 高さ
ENUM_COLOR_FORMAT clrfmt=COLOR_FORMAT_XRGB_NOALPHA// フォーマット
);
こうして、キャンバスの一角をバインドできるようになる。ただし、幅と高さはすべてピクセルで設定されます。
ここでロシア語で書いていいのだろうか。
というのも、あなたは一方的に指示を出して いるが、実際にはダブルスタンダードを公言しているからだ。
記事をありがとう。残念ながら、その中のドキュメントへのリンクはすべて壊れています。
リンクを修正しました。メッセージをありがとう。
エラーが残っています。
はじめの段落:
...
CCanvas クラスを使って直接描画を始める前に、色の処理に関するいくつかの定義を学ぶ必要があります。たとえば、透明度とは何か、アルファ・チャンネルとは何か、などです。
...
項目 "5.1 スクリプト "Illusion.mq5" を作成する"
...
描かれた円を描きます。円は、キャンバスを塗りつぶした色の上に描かれます(canvas_XRGB_NOALPHA.Erase(ColorToARGB(colr,alpha));)。
canvas_XRGB_NOALPHA.CreateBitmapLabel - チャートオブジェクトにバインドされたグラフィックリソースを作成します。
キャンバス全体を ARGB フォーマットの色で塗りつぶします。
テキストを出力- このキャンバスの画像処理の種類。アルファ・チャンネルが255に等しいARGBフォーマットのテキスト色、つまり出力テキストの色。
描画したものをすべて画面に表示させたい場合は、画面をリフレッシュする必要が あります。
グラフィック・リソースはチャート・オブジェクトにバインドして作成したので(CreateBitmapLabel メソッド)、Destroy() メソッドを使ってリソースを削除します。
...
はじめまして、皆さん。情報 パネルを、取引のアイコンが上に重ならないようにする方法を教えてください。
前景にあるようで、すべてが後ろに描かれているのですが、案件が上に重なっています。