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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
AXL

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

#1

投稿記事 by AXL » 13年前

ボタンの上にマウスを乗せるとハイライトされるようにしたいです。

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

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

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 13年前

単に明るくするだけなら、SetDrawBrightで良いんじゃないでしょうか?
http://homepage2.nifty.com/natupaji/DxL ... html#R3N18
他の方法だと色々とややこしくなります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

AXL

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

#3

投稿記事 by AXL » 13年前

返答ありがとうございます。

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 13年前

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

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

一度ボタンを描画した後、SetDrawBrightでハイライトしたい色を強調して、SetDrawBlendModeのDX_BLENDMODE_ADDで同じボタンを上に重ねて加算描画して下さい。この時は、字もハイライト専用に描画してください。
この場合ボックスとか便利な方法はありませんので、自分でうまく関数化してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

AXL

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

#5

投稿記事 by AXL » 13年前

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);
}

閉鎖

“C言語何でも質問掲示板” へ戻る