キャンバスがカッコいい! - ページ 72

 

なぜわざわざ、OpenGLとOSG(http://www.openscenegraph.org/)をCanvasに組み込んでいるのか。

そうすれば、星だけでなく、空も飛ぶようになります。)

PS/ 表面のopenglとして、あなたは「リソース」、より正確にはそれらのためのデータを使用することができます - GLは、画面だけでなく、単に配列で描画することができます、すなわち、ここで特定の互換性があります

The OpenSceneGraph Project Website
  • www.openscenegraph.org
Project website for OpenSceneGraph
 
Nikolaiさん、ありがとうございます。
 
Jagg #:
Nikolaiさん、ありがとうございます。

はい。
しかし、やはりマウスイベントのフリーズが時々発生します。
このバグは、MQで修正される可能性は低いです。OnChartEvent内の計算がある値(約10ミリ秒)を超えると発生し、その後OnChartEventイベントは約300ミリ秒フリーズします。

このバグはタイマーで回避さ れます。

10000個以下の星を入れた場合(例:5000個)、このバグが出ない場合があります。


追記:約束通り、コードをリセットしました。

ファイル:
Stars.ex4  27 kb
 
Nikolaiさん、ありがとうございます。
 
Andrey Khatimlianskii #:

だから、みんなに一度でわかるように、見せてあげてください )

ここでは、カラースターを使ったわかりやすい例をご紹介します。
黄色い線の左側は、二重座標で混色したアンチエイリアスのかかったグラフィックです。
右は、int座標で平滑化されていない状態。

スクリーンショットでは、MaxSizeRadius = 2です。

ファイル:
3DStars.mq5  12 kb
iCanvas_CB.mqh  53 kb
 

このスレッドはKanvasで最も有能だと思うので、以下の問題を自分で解決するために私の時間を節約してください。


ResourceReadImage/ResourceCreateでデータにアクセスする、既に生成されたリソースがあります。リソースはそれ自身であり、読み取り専用ではありません。

この画像に何行かのテキストを入れる必要があります。


大雑把に言うと、Data[]-pixelとWidthの配列があります。Data[]を適宜変換する。


TextOutで解決 - 用意したData[]-配列をそこに置くだけでテキストが追加されます。

 
fxsaber #:

SZ その解決策は、TextOutを使うことです。

ああ、ちょっとだけ記録に残らないニュアンスがあるんだ。
アルファチャンネル(COLOR_FORMAT_ARGB_NORMALIZE)を使用する場合は、ビットマップを作成する前に、ゼロ以外のもので埋める必要があります。

.Erase(0x00FFFFFF);

にしないと、文字のエッジが「ギザギザ」になってしまいます。

 
Nikolai Semko #:

そう、ほんの少し、記録に残らないニュアンスがあるのです。

ありがとうございました。

 

kanvas上の編集ボックスの準備ができたコードがあるかどうか、どなたか教えてください。

私はラバーパネルを作っていて、そのような要素が必要です。それをクリックしたときに、数字を入力したり削除したり、点滅するカーソルを見る必要があります。

もしなければ、クリックしたときに通常の置換をします。

 
Vitaliy Kuznetsov #:

どなたか、エディットボックスをキャンバスに表示するためのコードがあれば教えてください。

私はラバーパネルを作っていて、そのような要素が必要なのです。それをクリックすると、数字を入力したり削除したりする必要があり、点滅するカーソルが表示されます。

もしなければ、クリックしたときに通常の置換をします。

誰かが実装しているかもしれないが、私はそれに出会っていない。
このタスクは最も難しいものではないが、最も簡単なものでもない。
いずれにせよ、このような実装にはJSで1500行近くかかる。(https://goldfirestudios.com/canvasinput-html5-canvas-text-input)
個人的にはそのような要素は必要なかった。数値を変更するこの方法には大きな欠点があります - より良いビジュアライゼーションのために "オンザフライ "でパラメータを変更することは不可能です。スライダーはこれをうまく処理し、スライダーの実装はずっと簡単です。

理由: