縦型スライダーコントロールのスタイルの変更
「縦型スライダーの実装」で実装したスライダーはハンドルが上にある時に1.0、下にある時に0.0となります。
UIを作成する上で、逆の方向(ハンドルが上にある時に0.0、下にある時に1.0)にしたい場合があります。
このような場合は、CVerticalSliderクラスのsetStyle()関数を使用します。setStyle()関数には下記のどちらかを引数として指定します。
引数 | 意味 |
---|---|
kBottom | kVertical | スライダーハンドルが上にある時に1.0、下にある時に0.0となる (デフォルトはこちら) |
kTop | kVertical | スライダーハンドルが上にある時に0.0、下にある時に1.0となる |
【guieditor.cpp】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
CControl* MyVSTGUIEditor::createVSlider(ParamID tag, int x, int y) { // 縦型スライダーコントロールの作成 // まずは画像ファイルを読み込む CBitmap *backbmp = new CBitmap("slider_v.png"); CBitmap *handlebmp = new CBitmap("slider_v_handle.png"); // 画像ファイルからサイズを取得する CRect size; size(0, 0, backbmp->getWidth(), backbmp->getHeight()); size.offset(x, y); // 位置を設定(frameの左上が0,0となる) // コントロールの作成 // スライダーハンドルはスライダー背景画像の上から下まで動かないよう、 // 若干のマージンを持たせる。このマージンは画像によって変わる int bmpmargin = 1; CVerticalSlider* control = new CVerticalSlider(size, this, tag, y + bmpmargin, y + backbmp->getHeight() - (handlebmp->getHeight() + bmpmargin), handlebmp, backbmp); // コントロールのスタイルを変更し、ハンドルの動きを上から下に control->setStyle(kTop | kVertical); // パラメータの現在の値を取得し、コントロールに反映 ParamValue value = controller->getParamNormalized(tag); control->setValueNormalized(value); // コントロールをフレームに登録 frame->addView(control); // 読み込んだ画像は忘れず解放 backbmp->forget(); handlebmp->forget(); // 作成したコントロールのポインタを返す return control; } |
CVerticalSliderクラスのコンストラクタに指定する「最大時のハンドル位置」「最小時のハンドル位置」(縦型スライダーの実装 参照)は変更する必要はありません。
以上です。
上記以外にもVST3.6についての情報があります。下記をご参照ください。
また、質問やご指摘はコメント欄や掲示板、Twitterでいただけばとおもいます。
■掲示板
■Twitterアカウント:@vstcpp URL:https://twitter.com/vstcpp