トップページ > 過去ログ > 記事閲覧
MakeScreenで画像を表示すると画質が乱れる
名前:もなどな 日時: 2012/08/24 11:23

プログラミングの初心者です。 この掲示板も初めて使うので、失礼なことがあったらすみません。 次のようなプログラムです。 //画像は乱れない DrawGraph(0,0,graph1,TRUE); //画像が乱れる int equationGraph = MakeScreen(60,60,TRUE); SetDrawScreen(equationGraph); DrawGraph(0,0,graph1,TRUE); SetDrawScreen(DX_SCREEN_BACK); DrawGraph(0,0,equationGraph,TRUE); 原因に心当たりのあるかたがいたら、どなたか教えていただけませんか。

Page: 1 |

Re: MakeScreenで画像を表示すると画質が乱れる ( No.1 )
名前:管理人 日時:2012/08/26 00:03

私の手元でも試してみましたが、特に画像が乱れるということはありませんでした よろしければ具体的にどのように乱れるのか教えて頂けないでしょうか? あと、プログラム実行時に作成される Log.txt の中身もよろしければ丸ごとこちらの掲示板に 貼り付けてください m(_ _)m 因みに、「描画先に指定できる画像」の機能自体が基礎的な描画機能に比べると少し敷居が高いので お使いのPCに搭載されているグラフィックスデバイスが対応していない可能性もあります
Re: MakeScreenで画像を表示すると画質が乱れる ( No.2 )
名前:もなどな 日時:2012/08/27 07:33

以下がそのプログラムになります。 画像も貼りたいのですが、画像の貼り方がよくわかりません……。 乱れるというのは少し間違った表現でした。 graph.pngをそのまま描画すると、濃く表示されるのですが、MakeScreenに画像を貼ってから表示すると 薄くなってしまいます。 サイズは変えていないで、ただ2枚並べただけなのですが……。 ////////////////////////////////// #include "DxLib.h" //GetHitKeyStateAll_2()の定義 int GetHitKeyStateAll_2(int KeyStateBuf[]){ //キー情報 char GetHitKeyStateAll_Key[256]; GetHitKeyStateAll( GetHitKeyStateAll_Key ); for(int i=0;i<256;i++){ if(GetHitKeyStateAll_Key[i]==1) KeyStateBuf[i]++; else KeyStateBuf[i]=0; } return 0; } int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { SetGraphMode(640 ,480 ,32); //ウィンドウサイズを640×480にして、32bitカラー ChangeWindowMode(TRUE); SetMainWindowText("画像の不具合"); DxLib_Init(); SetDrawScreen( DX_SCREEN_BACK ); int key[256]; int Graph = LoadGraph("file\\graph.png"); //int Graph = DerivationGraph(0,0,300,30,graph); int equationGraph = MakeScreen(300,60,TRUE); SetDrawScreen(equationGraph); DrawGraph(0,0,Graph,TRUE); DrawGraph(0,30,Graph,TRUE); SetDrawScreen(DX_SCREEN_BACK); int back = LoadGraph("file\\white.png"); while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){ GetHitKeyStateAll_2(key); if(key[KEY_INPUT_ESCAPE]==1){ break; } DrawGraph(0,0,back,FALSE); //背景の白 DrawString(0,0,"↓普通に描画した場合",GetColor(0,0,0)); DrawGraph(0,20,Graph,TRUE); //数字画像 DrawString(0,100,"↓MakeScreenを使って描画した場合",GetColor(0,0,0)); DrawGraph(0,120,equationGraph,TRUE);//数字画像をMakeScreenに貼りなおした画像 } DxLib_End(); return 0; } //////////////////////////////////////////////// Log.txt /////////////////////////////////////////////// 0:システムの情報を出力します 1: DXライブラリ Ver3.07a 3: 論理プロセッサの数 : 4 5: OS Windows7 ( Build 7601 Service Pack 1 ) 108: CPU動作速度:大体2.38GHz 109: MMX命令を使用します 110: SSE命令が使用可能です 111: SSE2命令が使用可能です 112: CPUベンダ:GenuineIntel 116: CPU名: Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz 121:COMの初期化... 成功しました 123:メモリ総量:4002.05MB 空きメモリ領域:1222.41MB 130:タイマーの精度を検査します 131:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 133: パフォーマンスカウンターを使用します タイマー精度 : 2338.515000 KHz 135: ソフトの二重起動検査... 二重起動はされていませんでした 137:ウインドウクラスを登録します... 登録に成功しました 138:ウインドウモード起動用のウインドウを作成します 227:ウインドウの作成に成功しました 416:IMEを無効にしました 418:ウインドウスタイルをウインドウモード用に変更します... 完了 422:DirectInput関係初期化処理 423: DirectInput7 の取得中... 成功 468: 引き続き初期化処理... 初期化成功 471: ジョイパッドの初期化... 482: ジョイパッドの初期化は正常に終了しました 483: マウスデバイスの初期化... 初期化成功 485: キーボードデバイスの初期化... 初期化成功 488:DirectInput 関連の初期化は正常に終了しました 493:DirectSound の初期化を行います 495:DirectSound インターフェースの取得を行います.... 成功 506:引き続きインターフェースの初期化処理... 成功 658: DirectSound デバイスを列挙します 660: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 661: モジュール名:{0.0.0.00000000}.{b76a491e-ded0-4d1d-bc1f-d1211f6135a8} ドライバ記述:スピーカー / ヘッドホン (IDT High Definition Audio CODEC) 664: モジュール名:{0.0.0.00000000}.{394df1a0-8ecb-4d10-af9d-3e5bed8650a7} ドライバ記述:通信ヘッドホン (IDT High Definition Audio CODEC) 666: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 667: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 669: 利用可能サンプリング精度 671: プライマリ 16bit = OK 8bit = OK 673: セカンダリ 16bit = OK 8bit = OK 675: 利用可能チャンネル 677: プライマリ MONO = OK STEREO = OK 678: セカンダリ MONO = OK STEREO = OK 681:DirectSound の初期化は正常に終了しました 691:DirectDraw オブジェクトの取得を行います.... 成功 703:引き続き初期化処理... 初期化に成功しました 758:IDirect3D9Ex オブジェクトを取得します.... 成功 763:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 1042:成功 1045:Driver:igdumdx32.dll Description:Intel(R) HD Graphics Family 1048:画面のフォーマットは D3DFMT_X8R8G8B8 です 1051:Zバッファのフォーマットは D3DFMT_D16 です 1054:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 1056:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 1059:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 1060:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 1060:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 1062:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 1062:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 1063:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 1064:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 1065:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 1065:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 1066:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 1067:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 1067:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 1068:描画用ABGR浮動小数点16ビット型カラーフォーマットは D_D3DFMT_A16B16G16R16F です 1086:描画用ABGR浮動小数点32ビット型カラーフォーマットは D_D3DFMT_A32B32G32R32F です 1087:最大テクスチャサイズ 幅:8192 高さ:8192 1088:テクスチャステージテンポラリレジスタ:使用可 1088:減算合成のハードウェア対応:ネイティブ 1089:頂点シェーダーバージョンコード:300 1090:ピクセルシェーダーバージョンコード:300 1119:バックバッファロック転送の時間:3708nsec 一時的な描画可能バッファを使用した転送の時間:1128nsec 1120:バックバッファロックを使用しません 1121:Zバッファを作成します.... 成功 1131:プログラマブルシェーダーを使用します 1204:フォントの初期化を行います 1208:フォントの初期化は正常に終了しました 1233:文字コードバッファの初期化を行います... 完了しました 4043:ウインドウを閉じようとしています 4068:ウインドウが破棄されようとしています 4071:ソフトを終了する準備が整いました 4105:フォントの初期化を行います 4106:フォントの初期化は正常に終了しました 4108:Direct3DDevice9 の解放 3 4139:Direct3D9 DLL の解放 4 4143:DirectInput 関連の終了処理... 完了 4178:DirectSound の終了処理は正常に終了しました 4220: 4222:Alloc memory dump 4223: Total size:0(0.000kb) Alloc num:0 4224:
Re: MakeScreenで画像を表示すると画質が乱れる ( No.3 )
名前:いっち 日時:2012/08/27 21:26

懸案となっている画像自体を見ていないので不確かなのですが、以下のように変更することで解決するかもしれません。 > SetDrawScreen(equationGraph); > DrawGraph(0,0,Graph,TRUE); > DrawGraph(0,30,Graph,TRUE); > SetDrawScreen(DX_SCREEN_BACK); ↓↓↓↓ 変更 ↓↓↓↓ > SetDrawScreen(equationGraph); > SetDrawBlendMode( DX_BLENDMODE_SRCCOLOR, 255 ); > DrawGraph(0,0,Graph,TRUE); > DrawGraph(0,30,Graph,TRUE); > SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 255 ); > SetDrawScreen(DX_SCREEN_BACK); > 画像も貼りたいのですが、画像の貼り方がよくわかりません……。 普通にアップローダを利用してそのURLを載せていただければ大丈夫です。
Re: MakeScreenで画像を表示すると画質が乱れる ( No.4 )
名前:もなどな 日時:2012/08/29 18:41

普通に表示されました! ありがとうございます。

Page: 1 |