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

 
Vladimir Karputov:

canvas.Rectangleはオブジェクトではなく、ピクセルの束を描画するためのコマンドです。銃声のようなもので、弾が発射されると、さようならとなる。フィードバックがないんです。

ノーフィードバックでありがとうございました。

ラシード・ウマロフ

CCanvas クラスの探索という 記事があります。グラフィックオブジェクトの透過性の実装、解決策があるはずです。

217回閲覧し、現在も開いていますが、解決策が見当たりません。

OnTick()でキャンバスとフレームの色を変更するライブの例が必要です。

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

 
Vitaly Muzichenko:

接続ありがとうございます。

217回見て、今開いているのですが、解決策が見当たりません。

OnTick()でキャンバスとフレームの色を変更するライブ例が必要です。

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

私のコードに基づいて、ちょうどキャンバスの色を変更し、フレームを描画するために立ち往生。

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static long counter=0;
   counter++;
   if(counter%40==0)
     {
      m_canvas.Erase(ColorToARGB(clrBlue,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrRed,255));
      m_canvas.Update();
      return;
     }
   if(counter%20==0)
     {
      m_canvas.Erase(ColorToARGB(clrRed,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrBlue,255));
      m_canvas.Update();
      return;
     }
  }


透明度のある色を使うので、キャンバス作成時に「COLOR_FORMAT_ARGB_NORMALIZE」を指定しました。

//--- create canvas
   if(!m_canvas.CreateBitmapLabel("SampleCanvas",5,15,700,300,COLOR_FORMAT_ARGB_NORMALIZE))
ファイル:
 
Vladimir Karputov:

自作のコードを元に、キャンバスカラーの変更を入れ、フレームを描くだけです。


透明度のある色を使うので、キャンバス作成時に「COLOR_FORMAT_ARGB_NORMALIZE」を指定しました。

これから見てみます!ありがとうございました。

私が期待していたもの - ずっと前に手に入れたものです。それはフレームと選択範囲を持つかろうじて透明なキャンバスですが、今は色を変える必要があり、それはうまくいきません。


 
Vitaly Muzichenko:

今見てみます!ありがとうございます。

私が期待していたもの - ずっと前に手に入れた、それはボーダーと選択範囲を持つかろうじて透明なキャンバスですが、今私は色を変更する必要があり、それはうまくいきません。


おそらく、ENUM_COLOR_FORMAT(キャンバス作成時)と色の取得方法に問題があるのでしょう。

 
Vitaly Muzichenko:

OnInitで、キャンバスを作成します。

そして、OnTickで10:00に色をグレーに変え、11:00に再び元の状態に戻す必要があります。

うまくいかないんです。

質問です。

キャンバスやフレームの色を変更するにはどうすればよいですか。オブジェクト名の参照はできません。

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

色をいじったような気がします。

このセリフの意味するところは何でしょう。

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

COLOR_FORMAT_ARGB_NORMALIZE は、キャンバスを背景色で 埋める必要はなく、ゼロで埋める必要があります。

canvas.Erase(0);

は、キャンバスが完全に透明であることを意味します。

また、16色表現ができるのも便利です。

例えば

0x00000000 - 完全透過の黒

0xFF000000 - 不透明な黒。

0xFFFFFFFF - 不透明な白色

0xFFFF0000 - 不透明な赤色

0xFF00FF00 - 不透明な緑色

0xFF0000FF - 不透明な青色

0x8000FF00 - 半透明な緑色

0x80FFFFFF - 半透明の黒。

0xFF808080 - グレー

など

 
Vladimir Karputov:

おそらく、ENUM_COLOR_FORMAT(カンヴァス作成時)と色の取得方法に問題があるのでしょう。

問題解決

私のコードでは、ターミナルを閉じた ときにキャンバスを削除していなかったので、起動時にすでにチャート上にあったため、初期化されず、プロパティの変更もどこに適用すればいいかわかりませんでした。

皆さん、ありがとうございました。

 
Nikolai Semko:

色をいじったような気がします。

そのセリフの意味は?

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

線がないとこのような絵になるのがポイントです。


ラインと一緒なら、その通り、私の選んだ色で素敵なフレームを。


 
Vitaly Muzichenko:

問題解決

私のコードでは、ターミナルを閉じたときにキャンバスを削除しなかった ので、起動時にすでにチャート上にあったため、初期化されず、プロパティの変更がどこに適用されるかわからなくなってしまいました。

皆さん、ありがとうございました。

うーん、本当に犬がどこにいるのか一発で当てられませんね :)

 

ビットマップ・スケーリング付きスクリプトのデモ

Ex5ファイルの中には、かなり大きなBMPファイルがリソースとして入っています。


ファイル:
TestScaling.ex5  784 kb
 
Nikolai Semko:

ラスタースケーリングスクリプトのデモ

いや、本当に感動しました。

でも、そのCanvasの機能を生かした便利なアドオンを作らないといけないんです。

CGAアダプターのように、同時代に誤解され過小評価された素晴らしいグラフィックアダプターのような運命に陥らないように。

私自身は、CGAはコモドール64やシンクレア・スペクトラムの8ビットグラフィックスに負ける「相変わらずダサい」と思っていた。しかし、最近になって、このカードが普及していないために、ほとんど誰もこのカードを使いこなせないことが判明した。また、8ビットの家庭用パソコンに対抗できるゲームもほとんどありませんでした。

もしIBMがCGAを推進していたら、このデモが1981年に登場していたら--CGAはもっと普及していただろうし、もしかしたらEGAも後にリリースされていたかもしれない。


この画面を見ると、16Kのビデオメモリを搭載した古いCGAアダプタを一般家庭のテレビに接続して、こんなことができるなんて信じられない(RGBモニタはこれに全く適していない。 RGBモニタではテキストの品質は良いが、色合いが悪く、コンポジット入力の家庭用テレビでは読みにくいテキストでグラフィックの可能性を豊かにするというのが、開発者の考えであった)。