OBJ_TEXTオブジェクトでテキストを複数行に出力することは可能ですか? - ページ 3 12345678 新しいコメント Nikolai Semko 2019.03.07 21:48 #21 Alexey Viktorov: Nikolay、テキストを右上に揃えることは可能ですか?半日も悩んでしまった...。右隅に揃えたのですが、文字が左側にしか揃いません。ヒントを教えてください。 少なくとも2つの方法を知っています。アレクセイ、コンピュータを手に入れたらすぐに見せるから、それまでに処理できないならキャンバスに描くのか、オブジェクトに描くのか? Andrei Trukhanovich 2019.03.07 23:15 #22 Nikolai Semko: 少なくとも2つの方法を知っています。TextOutにアンカーパラメータを設定する(おそらくオブジェクト自体にも設定する) テキストサイズを計算し、それを考慮する ) Nikolai Semko 2019.03.07 23:17 #23 Andrei Trukhanovich:TextOutにアンカーパラメータを設定する(おそらくオブジェクト自体も)。 テキストサイズを計算し、それを考慮する ) せいかい Nikolai Semko 2019.03.08 06:23 #24 Alexey Viktorov: ニコライさん、文字を右上に揃えることは可能でしょうか。半日も悩んでしまった...。右端は揃うが、テキストは左端にしか揃わない。ヒントを教えてください。 #property indicator_chart_window #include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 int OnInit() { RightTopText("Текст в правом верхнем углу","Tahoma",25); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { return(rates_total); } //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_CHART_CHANGE) RightTopText("Текст в правом верхнем углу","Tahoma",25); } //+------------------------------------------------------------------+ void RightTopText(string str,string name,int size) { Canvas.Erase(); Canvas.FontSet(name,size); Canvas.TextPosition(W.Width-Canvas.TextWidth(str)-5,0); Canvas.Comm(str); Canvas.Update(); } //+------------------------------------------------------------------+ Alexey Viktorov 2019.03.08 07:59 #25 Nikolai Semko: 少なくとも2つの方法を知っています。アレクセイ、コンピュータを手に入れたらすぐに見せるから、それまでに処理できないならキャンバスに描くか、オブジェに描くか? もちろん、キャンバスに。質問があなたに向けられているので。 Alexey Viktorov 2019.03.08 08:00 #26 Andrei Trukhanovich:TextOutにアンカーパラメータを設定する(おそらくオブジェクト自体にも設定する) テキストサイズを計算し、それを考慮する ) 試してみました。昨日は半日ほど悩んでいました。何かを変更すると、すぐにテキストが完全に消えてしまいます。そして、見つからないのです。 Alexey Viktorov 2019.03.08 08:09 #27 Nikolai Semko: そういう意味じゃないんです。右側は問題ありません。ただし、長さの異なる2行以上の場合は、その行の最初の文字で整列されます。そして、文字列は、文字列の最後の文字で整列させたい。 これが1行目です。 これが2行目です。 そして、これが3行目です。 1ページ目の例では、コードの2番目と3番目の部分でピクセルシフトとパーセントシフトを使用しています。しかし、行は左端からインデントすることでしか揃えることができません。しかし、特に文字列の長 さにばらつきがある場合、これは必ずしも便利ではありません。例えば、"sum = 10 "や "sum = 1000 "のように。 Igor Zakharov 2019.03.08 08:29 #28 話題がCANVASに行ったのは不思議な感じです。太古の昔からやっていることです。 string obj_pref="A_EA_"; void Text(int i,string text="",color CLR=clrBlue) { string name=obj_pref+IntegerToString(i); if(ObjectCreate(0,name,OBJ_LABEL,0,0,0)) { ObjectSetInteger(0,name,OBJPROP_CORNER,CORNER_RIGHT_UPPER); ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); ObjectSetInteger(0,name,OBJPROP_XDISTANCE,5); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,int(i*FS*1.4)); ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FS); ObjectSetString (0,name,OBJPROP_FONT,"Arial"); } ObjectSetString (0,name,OBJPROP_TEXT,text); ObjectSetInteger(0,name,OBJPROP_COLOR,CLR); } FS - フォントの高さ。 右上のPSの例 :) Alexey Viktorov 2019.03.08 08:33 #29 Igor Zakharov:話題がCANVASに行ったのが不思議なくらいです。太古の昔からやっていることです。 FS - フォントの高さ。 右上のPSの例 :)私もそれで何年もやってこれたんです。 Alexey Viktorov 2019.03.08 10:10 #30 それだ、わかったぞ。 OBJ_BITMAP_LABELオブジェクトを 右端に揃え、水平方向と垂直方向にインデントし、OBJPROP_ANCHORをANCHOR_RIGHT_UPPERに代入しています。そして、リソースの作成時に画像の幅を設定する。この値を第2パラメータとしてTextOutに入れると、テキストがキャンバスの右側に整列されます。 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Nikolay、テキストを右上に揃えることは可能ですか?半日も悩んでしまった...。右隅に揃えたのですが、文字が左側にしか揃いません。ヒントを教えてください。
少なくとも2つの方法を知っています。
TextOutにアンカーパラメータを設定する(おそらくオブジェクト自体にも設定する)
テキストサイズを計算し、それを考慮する )
TextOutにアンカーパラメータを設定する(おそらくオブジェクト自体も)。
テキストサイズを計算し、それを考慮する )
ニコライさん、文字を右上に揃えることは可能でしょうか。半日も悩んでしまった...。右端は揃うが、テキストは左端にしか揃わない。ヒントを教えてください。
少なくとも2つの方法を知っています。
TextOutにアンカーパラメータを設定する(おそらくオブジェクト自体にも設定する)
テキストサイズを計算し、それを考慮する )
そういう意味じゃないんです。右側は問題ありません。ただし、長さの異なる2行以上の場合は、その行の最初の文字で整列されます。そして、文字列は、文字列の最後の文字で整列させたい。
これが1行目です。
これが2行目です。
そして、これが3行目です。
1ページ目の例では、コードの2番目と3番目の部分でピクセルシフトとパーセントシフトを使用しています。しかし、行は左端からインデントすることでしか揃えることができません。しかし、特に文字列の長 さにばらつきがある場合、これは必ずしも便利ではありません。例えば、"sum = 10 "や "sum = 1000 "のように。話題がCANVASに行ったのは不思議な感じです。太古の昔からやっていることです。
FS - フォントの高さ。
右上のPSの例 :)
話題がCANVASに行ったのが不思議なくらいです。太古の昔からやっていることです。
FS - フォントの高さ。
右上のPSの例 :)
私もそれで何年もやってこれたんです。
それだ、わかったぞ。
OBJ_BITMAP_LABELオブジェクトを 右端に揃え、水平方向と垂直方向にインデントし、OBJPROP_ANCHORをANCHOR_RIGHT_UPPERに代入しています。そして、リソースの作成時に画像の幅を設定する。この値を第2パラメータとしてTextOutに入れると、テキストがキャンバスの右側に整列されます。