トップページ > 過去ログ > 記事閲覧
SetDrawBrightの挙動について
名前:SweetBlack 日時: 2008/10/15 15:26

いつもお世話になっております。 SetDrawBrightについて、良くわからない現象が起きていて困っています。 サンプルプログラムを後述します。 このサンプルプログラムは、SetDrawBrightを使って 輝度を「灰色、白、緑、青、赤、黄色、ピンク」と 順番に変えながら、画面左端に白いBoxを描いていき、 次にその右側に逆回しで輝度を変化させつつ 同様に白いBoxを描いていくようになっています。 予測としては ┌───┐  ┌───┐ │灰色 │  │灰色 │ ├───┤  ├───┤ │白  │  │白  │ ├───┤  ├───┤ │緑  │  │緑  │ ├───┤  ├───┤ │青  │  │青  │ ├───┤  ├───┤ │赤  │  │赤  │ ├───┤  ├───┤ │黄色 │  │黄色 │ ├───┤  ├───┤ │ピンク│  │ピンク│ └───┘  └───┘ となるはずなのですが、 ┌───┐  ┌───┐ │灰色 │  │灰色 │ ├───┤  ├───┤ │白  │  │白  │ ├───┤  ├───┤ │緑  │  │青←?│ ├───┤  ├───┤ │緑←?│  │青  │ ├───┤  ├───┤ │赤  │  │赤  │ ├───┤  ├───┤ │黄色 │  │黄色 │ ├───┤  ├───┤ │ピンク│  │ピンク│ └───┘  └───┘ となってしまいます。 結果を見る限りだと、青←→緑への輝度変更が うまくいかないようですが、 エラーが返って来てるわけでもないようです。 よろしくお願いします。 //=====ここからサンプル===================== #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int err_flg ; int work_RGB[7][3] = { 128,128,128, //グレー 255,255,255, //白 0,255, 0, //緑 0, 0,255, //青 255, 0, 0, //赤 255,255, 0, //黄 255,128,128 } ; //ピンク // 画面モードのセット SetGraphMode( 640 , 480 , 16 ) ; if(DxLib_Init()==-1)return -1; SetDrawScreen(DX_SCREEN_FRONT); //--------------------------------------------------- ClearDrawScreen() ; for ( int y = 0 ; y < 7 ; y++ ) { err_flg = SetDrawBright( work_RGB[y][0],work_RGB[y][1],work_RGB[y][2] ) ; DrawBox( 0 , y * 30 , 100 , y * 30 + 29 , GetColor(255,255,255) , TRUE ) ; DrawFormatString( 101, y * 30,GetColor(255,255,255) ,"%d", err_flg); } for ( int y = 6 ; y >= 0 ; y-- ) { err_flg = SetDrawBright( work_RGB[y][0],work_RGB[y][1],work_RGB[y][2] ) ; DrawBox( 200 , y * 30 , 300 , y * 30 + 29 , GetColor(255,255,255) , TRUE ) ; DrawFormatString( 301, y * 30,GetColor(255,255,255) ,"%d", err_flg); } WaitKey() ; //--------------------------------------------------- DxLib_End(); return 0; }

Page: 1 |

Re: SetDrawBrightの挙動について ( No.1 )
名前: 日時:2008/10/15 15:51

DxGraphics.cpp:5900からの 前回と同じ値でのチェックが、 if( GBASE.DrawBright.Red == RedBright && GBASE.DrawBright.Green == BlueBright && GBASE.DrawBright.Blue == GreenBright ) となっていました。 このせいで、正しく変更できていないようです。 正しくは if( GBASE.DrawBright.Red == RedBright && GBASE.DrawBright.Green == GreenBright && GBASE.DrawBright.Blue == BlueBright ) ですね。 #見たソースは若干古いので、 #最新では修正されているかもしれません。
Re: SetDrawBrightの挙動について ( No.2 )
名前:管理人 日時:2008/10/25 17:14

申し訳ありません、原因は通さんがご指摘の通りです 修正版をアップしましたので宜しければお使い下さい m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: SetDrawBrightの挙動について ( No.3 )
名前:SweetBlack 日時:2008/10/25 19:59

修正ありがとうございます。 早速使わせていただきます。 通さんもありがとうございました。 お陰で回避策がはっきりしたため 当面の問題にはなっていませんでした。 これからもお世話になると思いますが よろしくお願い致します。

Page: 1 |