PUL画面.pngで右下の楕円のあたりに、Start.pngをノーブレンドで描画してボタンとし、
Start.pngがある位置にマウスカーソルが来たらPUL画面にStartを加算ブレンドしました。
ボタンが光るようになったのは予定通りなのですが、何故かボタン以外のところが暗くなってしまいます。
Start.pngでは、ボタンの周りは透明にしてあるので加算ブレンドではそこは加算されずに元のPUL画面の色のまま変わらないと考えたのですが・・・・・
ボタン部分のみを明るくしてそれ以外のところは変わらないようにするにはどうしたらいいでしょうか?
DXLibにおける加算ブレンド
DXLibにおける加算ブレンド
- 添付ファイル
-
- メイン画面
- PUL画面.png (3.72 KiB) 閲覧数: 3311 回
-
- ボタンのつもり
- Start.png (3.06 KiB) 閲覧数: 3311 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: DXLibにおける加算ブレンド
白に赤を加算ブレンドしても白のままだと思いますよ。何か違うブレンドしてませんか?
簡単な検証プログラムを提示してもらった方が良いと思います。
簡単な検証プログラムを提示してもらった方が良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXLibにおける加算ブレンド
一部抜粋。こんな感じです。今書いてて思いましたが言葉が足りませんでしたね。
PUL画面.pngで右下の楕円のあたりに、Start.pngをノーブレンドで描画してボタンとし、
Start.pngがある位置にマウスカーソルが来たらその上にさらにStartを加算ブレンドしました。
ですね
コードで「//PUL画面」の下の中かっこはプログラム本体でいくつか画面切り替えがあるので自分の見やすいように一つの画面処理を括ったものです。
と書きましたが、史上最悪のデスペナ さんが書きました:PUL画面.pngで右下の楕円のあたりに、Start.pngをノーブレンドで描画してボタンとし、
Start.pngがある位置にマウスカーソルが来たらPUL画面にStartを加算ブレンドしました。
PUL画面.pngで右下の楕円のあたりに、Start.pngをノーブレンドで描画してボタンとし、
Start.pngがある位置にマウスカーソルが来たらその上にさらにStartを加算ブレンドしました。
ですね
コードで「//PUL画面」の下の中かっこはプログラム本体でいくつか画面切り替えがあるので自分の見やすいように一つの画面処理を括ったものです。
#include "DXLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//////////////////////////////////////////////////////////////////////////////////////////////
//PUL画面
{
//DXlibの初期化
if(DxLib_Init() == -1) return -1;
//バックバッファに描画
if(SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;
int MainGrapHnd = LoadGraph( "model\\pic\\PUL画面.png" );
int ButtonHnd = LoadGraph( "model\\pic\\Start.png" );
int MouseX, MouseY;
FontHandle = CreateFontToHandle(NULL, 30, 9);
int FontHnd1 = CreateFontToHandle(NULL, 20, 5);
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClearDrawScreen();
DrawGraph( 0, 0, MainGrapHnd, TRUE );
GetMousePoint( &MouseX, &MouseY);
if( (470<=MouseX) && (MouseX<=580) && (330<=MouseY) && (MouseY<=390) )
{
// 描画ブレンドモードを加算ブレンドにする
SetDrawBlendMode( DX_BLENDMODE_ADD, 128) ;
DrawGraph( 470, 330, ButtonHnd, TRUE );
if(( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0) break;
} else {
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
DrawGraph( 470, 330, ButtonHnd, TRUE );
}
DrawFormatStringToHandle( 485, 345, GetColor(255, 255, 255), FontHandle, "START" );
DrawFormatStringToHandle( 170, 15, GetColor( 128, 128, 128), FontHnd1, "お知らせ" );
ScreenFlip();
}
}
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: DXLibにおける加算ブレンド
とりあえず加算ブレンドモードに切り替えると以後全部加算ブレンドで動作するので、一回ごとに元に戻してください。
直してみたもの。
直してみたもの。
#include "DXLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//////////////////////////////////////////////////////////////////////////////////////////////
//PUL画面
{
ChangeWindowMode(TRUE);
//DXlibの初期化
if(DxLib_Init() == -1) return -1;
//バックバッファに描画
if(SetDrawScreen(DX_SCREEN_BACK) != 0) return -1;
int MainGrapHnd = LoadGraph( "model\\pic\\PUL画面.png" );
int ButtonHnd = LoadGraph( "model\\pic\\Start.png" );
int MouseX, MouseY;
int FontHandle = CreateFontToHandle(NULL, 30, 9);
int FontHnd1 = CreateFontToHandle(NULL, 20, 5);
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClearDrawScreen();
DrawGraph( 0, 0, MainGrapHnd, TRUE );
GetMousePoint( &MouseX, &MouseY);
if( (470<=MouseX) && (MouseX<=580) && (330<=MouseY) && (MouseY<=390) )
{
// 描画ブレンドモードを加算ブレンドにする
DrawGraph( 470, 330, ButtonHnd, TRUE );
SetDrawBlendMode( DX_BLENDMODE_ADD, 128) ;
DrawGraph( 470, 330, ButtonHnd, TRUE );
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0) ;
if(( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0) break;
} else {
DrawGraph( 470, 330, ButtonHnd, TRUE );
}
DrawFormatStringToHandle( 485, 345, GetColor(255, 255, 255), FontHandle, "START" );
DrawFormatStringToHandle( 170, 15, GetColor( 128, 128, 128), FontHnd1, "お知らせ" );
ScreenFlip();
}
}
}by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXLibにおける加算ブレンド
出来ました!ありがとうございます。
常に加算ブレンドになっていたからPUL画面.png自身が自分に加算ブレンドを行って暗くなっていたんですね。
・・・・・・・・・ボタンとか画面がしょぼくてお恥ずかしい。。。。。皆さんどうやって作ってるのか気になる・・・・・・・・・
常に加算ブレンドになっていたからPUL画面.png自身が自分に加算ブレンドを行って暗くなっていたんですね。
・・・・・・・・・ボタンとか画面がしょぼくてお恥ずかしい。。。。。皆さんどうやって作ってるのか気になる・・・・・・・・・
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: DXLibにおける加算ブレンド
手前味噌ですが、私のボタンデザインツールです。
「ボタン工房」
http://softyasu.net/btnmaker.html
良かったらお試しください。
【補足】
こちらの彩彩畑も便利かと思います。
「IROMSOFT & IROMBOOK(画像 素材 作成 グラフィック・ツール)」
http://www.hm.h555.net/~irom/
「ボタン工房」
http://softyasu.net/btnmaker.html
良かったらお試しください。
【補足】
こちらの彩彩畑も便利かと思います。
「IROMSOFT & IROMBOOK(画像 素材 作成 グラフィック・ツール)」
http://www.hm.h555.net/~irom/
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXLibにおける加算ブレンド
おぉ。これは凄い。いろんなとこに多用させていただきます。
ゲームネット接続ナビも気になりますね。完成が楽しみです。
彩彩畑は私には合いませんでした^^;あれはGimpで作ったものです。
ゲームネット接続ナビも気になりますね。完成が楽しみです。
彩彩畑は私には合いませんでした^^;あれはGimpで作ったものです。