ページ 11

ボタンをハイライトしたい

Posted: 2012年8月20日(月) 23:42
by AXL
ボタンの上にマウスを乗せるとハイライトされるようにしたいです。

少し調べてみたのですが、このサイトの過去の質問では
SetBlendModeとDrawBoxを組み合わせてDrawBoxの範囲だけ色々と合成できる
ということなのですが(違ったらすいません)
Dxlib::SetBlendModeという関数が見つかりませんでした。。

どのようにしたらいいでしょうか?

ボタンはクラスで作ってあり、widthとheightを指定して描画関数を呼び出すと下記のような9種類の画像を組み合わせて表示されます。
①②③
④⑤⑥
⑦⑧⑨
※width=5,height=5の場合
※①②②②③
※④⑤⑤⑤⑥
※④⑤⑤⑤⑥
※④⑤⑤⑤⑥
※⑦⑧⑧⑧⑨

SetDrawBlendModeで画像それぞれにハイライトさせるのもいいのですが、その上に文字を表示させるので、
できたらボタンの座標と終端座標までの四角形にマスクのようなものをかけたいです。

Re: ボタンをハイライトしたい

Posted: 2012年8月21日(火) 00:27
by softya(ソフト屋)
単に明るくするだけなら、SetDrawBrightで良いんじゃないでしょうか?
http://homepage2.nifty.com/natupaji/DxL ... html#R3N18
他の方法だと色々とややこしくなります。

Re: ボタンをハイライトしたい

Posted: 2012年8月21日(火) 01:40
by AXL
返答ありがとうございます。

つまり描画処理前にSetDrawBrightでハイライトを設定して描画が終わったところでデフォルト値に戻すということでしょうか?
あと、100%以上にならないと書かれていますが・・・

ここの投稿フォームの、プレビューボタンや送信ボタンのようにしたいのですが、これを一枚の画像の明るさ調整だけでやりたいという感じです。

Re: ボタンをハイライトしたい

Posted: 2012年8月21日(火) 11:06
by softya(ソフト屋)
>つまり描画処理前にSetDrawBrightでハイライトを設定して描画が終わったところでデフォルト値に戻すということでしょうか?
>あと、100%以上にならないと書かれていますが・・・

あっと失礼しました。
SetDrawBlendModeと併用しないと好きな色でハイライト化はできませんね。

一度ボタンを描画した後、SetDrawBrightでハイライトしたい色を強調して、SetDrawBlendModeのDX_BLENDMODE_ADDで同じボタンを上に重ねて加算描画して下さい。この時は、字もハイライト専用に描画してください。
この場合ボックスとか便利な方法はありませんので、自分でうまく関数化してください。

Re: ボタンをハイライトしたい

Posted: 2012年8月21日(火) 19:14
by AXL
softya(ソフト屋) さんが書きました: 一度ボタンを描画した後、SetDrawBrightでハイライトしたい色を強調して、SetDrawBlendModeのDX_BLENDMODE_ADDで同じボタンを上に重ねて加算描画して下さい。この時は、字もハイライト専用に描画してください。
この場合ボックスとか便利な方法はありませんので、自分でうまく関数化してください。
なるほど、ありがとうございます。
うまく動きましたので解決とさせて頂きます。
ソースコードは大層なものではないですが、
感謝の意も込めて書き込んでおきます。

ボタンがonMouse時のスコープです。

コード:

{
SetDrawBright(128,128,128);
SetDrawBlendMode(DX_BLENDMODE_ADD,255);
DrawButton();
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0);
SetDrawBright(255,255,255);
}