ProgressBar

Q1
処理経過のバーの色を変える
A1
ProgressBarオブジェクトでは、バーの色や背景の色を変更することができます。

バーの色の変更はbarcolorプロパティ、背景色の変更はbgcolorプロパティにて行います。
これらのプロパティに指定したい色のパレットを割り当てることで色を変更します。

色の変更はstepitメソッド実行ごとにできますので、例えば処理経過の状態によって50%以下だったら青、 50%以上になったら赤にするなど処理経過の状態を色で表現することが可能です。
その場合は複数のパレットを用意して状態によって切り替える方法と、setPalleteメソッドを利用して、割り当てたパレットの色を変更する方法が考えられます。
細かく色を指定したい場合は後者の方法をとることをお勧めします。

サンプルコードではProgressBarオブジェクトでは、バーの色にグラデーションをつけながら処理経過を表示。


[サンプルコード]

赤から青へグラデーションしながら進捗状況を表示

BarColorプロパティを任意のパレットに設定し、ループ処理内のstepitメソッド実行前に BarColorに設定したパレット色をsetPalleteメソッドにて各色とも
(開始色 - (開始色 - 終了色)×ループ変数÷ループ回数)
に設定し、処理状況の変化とともに徐々に色が変わっていく表示させています。
var st = new Array();
var ed = new Array();

st["r"] = 255;
st["g"] = 0;
st["b"] = 0;

ed["r"] = 0;
ed["g"] = 0;
ed["b"] = 255;

var pb = ProgressBar.create();
var COUNT = 16000; /* 処理回数 */
pb.width = 200;
pb.height = 32;
pb.step = COUNT;
pb.barStyle = $SMOOTH;
pb.title = "処理中";
pb.barcolor = 105;
pb.popup();

for (var i = 0; i < COUNT; i++ ) {
 /* ここに処理を記述 */

 /* タイトルに「 xx%」と表示 */
 pb.title = "処理中 " + str(int((i / (pb.step - 1)) * 100)) + "%";
 /* バーの色を青から赤へ(0,0,255 から 255,0,0 へ) */
 SetPalette(pb.barcolor - 1 
  ,int(st["r"] - ((st["r"] - ed["r"]) * i) / (pb.step - 1))
  ,int(st["g"] - ((st["g"] - ed["g"]) * i) / (pb.step - 1))
  ,int(st["b"] - ((st["b"] - ed["b"]) * i) / (pb.step - 1)));
 pb.stepit();
}
管理番号:Prg_002
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ