今、新たに作っているのですが
DxLibを使用してます
そこで、DrawBox() 関数で 第5引数に色を指定しますが、ここに入れるソースコードとして
int型があります
なので、DrawBox( 0, 0, 200, 200, 0x001122, TRUE ); とできます
この場合、指定した色 0x001122 は環境依存になるのでしょうか?
DxLibのサンプルでは DrawBox( 0, 0, 200, 200, GetColor(0,1,2), TRUE );
と、GetColor() 関数を使用しているので、気になります
ご存知の方、返答くださると助かります
GetColorで指定する方法 直接指定する方法
Re: GetColorで指定する方法 直接指定する方法
GetColorを使った場合256色モードのときに一番近い色を自動的に選択してくれます
そうでないときは直接入力したものと同じ値が返ります
そうでないときは直接入力したものと同じ値が返ります
Re: GetColorで指定する方法 直接指定する方法
リファレンスにカラービット数に依存すると書いてあります。
Re: GetColorで指定する方法 直接指定する方法
>>GRAMさん
自動的に近い色に変換されるのですね
あと、説明不足でした
デスクトップ環境が16ビットのときに 色を 0x001122 と指定したときと
デスクトップ環境が32ビットのときに 色を 0x001122 と指定したときと
GetColor()関数で指定したときと
違いはでるのでしょうか?
== 同時投稿
>>リファレンスにカラービット数に依存すると書いてあります。
とあるので
色を0x001122と直接埋め込むと、環境依存にならないか?ということです
== 編集
0x0000FF と仮に指定して
16ビットでは青だったが32ビットでは赤になったという現象が発生する
というのが環境依存という意味で合っているでしょうか?
自動的に近い色に変換されるのですね
あと、説明不足でした
デスクトップ環境が16ビットのときに 色を 0x001122 と指定したときと
デスクトップ環境が32ビットのときに 色を 0x001122 と指定したときと
GetColor()関数で指定したときと
違いはでるのでしょうか?
== 同時投稿
>>リファレンスにカラービット数に依存すると書いてあります。
とあるので
色を0x001122と直接埋め込むと、環境依存にならないか?ということです
== 編集
0x0000FF と仮に指定して
16ビットでは青だったが32ビットでは赤になったという現象が発生する
というのが環境依存という意味で合っているでしょうか?
Re: GetColorで指定する方法 直接指定する方法
あぁすみません。
DxLibのプロジェクトを直接読んでたんですけどNS_GetColorのelse以下を流し読みしちゃったみたいです。
どうやら16ビットの場合も補正してくれるみたいですね。ふつうにビットマスクかけてると思ったら現在のビット数を参照しているようでした。
GetColorを使ったほうがよいのですね。
DxLibのプロジェクトを直接読んでたんですけどNS_GetColorのelse以下を流し読みしちゃったみたいです。
どうやら16ビットの場合も補正してくれるみたいですね。ふつうにビットマスクかけてると思ったら現在のビット数を参照しているようでした。
GetColorを使ったほうがよいのですね。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: GetColorで指定する方法 直接指定する方法
こう言うのは、試してみると早いです。
結論から言えば環境依存というよりは、指定カラービット数依存です。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int sx = GetSystemMetrics(SM_CXSCREEN); //横幅取得
int sy = GetSystemMetrics(SM_CYSCREEN); //縦幅取得
// 画面モードの変更
SetGraphMode( sx , sy , 32 ) ;
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
// BOX描画
DrawBox( 0, 0, sx, sy, GetColor(255,255,255), TRUE );
DrawBox( 0, 0, 200, 200, 0x00112F, TRUE );
DrawFormatString( 0, 0, GetColor(255,0,0), "%X %X", GetColor(0,0,255), GetColor(255,0,0) );
// キー待ち(『WaitKey』を使用)
WaitKey() ;
// 画面モードの変更
SetGraphMode( sx , sy , 16 ) ;
// BOX描画
DrawBox( 0, 0, sx, sy, GetColor(255,255,255), TRUE );
DrawBox( 0, 0, 200, 200, 0x00112F, TRUE );
DrawFormatString( 0, 0, GetColor(255,0,0), "%X %X", GetColor(0,0,255), GetColor(255,0,0) );
// キー待ち(『WaitKey』を使用)
WaitKey() ;
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: GetColorで指定する方法 直接指定する方法
はははw全くその通りですね。大事なことを忘れていました。softya(ソフト屋) さんが書きました:こう言うのは、試してみると早いです。
Re: GetColorで指定する方法 直接指定する方法
>>GRAMさん
>>softyaさん
貼られているソースコードで実行して試したところ、たしかに色が変化しますね
実際にやるという大事なことでしたw
なぜ、気づかなかったんだろう
解決しました ありがとうございました
>>softyaさん
貼られているソースコードで実行して試したところ、たしかに色が変化しますね
実際にやるという大事なことでしたw
なぜ、気づかなかったんだろう
解決しました ありがとうございました