トップページ > 過去ログ > 記事閲覧
SetDrawAreaのリファレンスについて
名前:いっち 日時: 2010/05/09 17:37

いつもお世話になっております。 何気なく SetDrawArea のリファレンスを読んでいて、 「あれ?」っと思ったのですが、以下のような記載があります。 > int SetDrawArea( int x1 , int y1 , int x2 , int y2 ) ; > ....(中略).... > なおこの関数で描画領域を無くす為に > >     SetDrawArea( 0 , 0 , 0 , 0 ) ; > > 等の記述で実行した場合はエラーとなり描画可能領域の変更は出来ませんのでご注意下さい。 現在、私は SetDrawArea に引数に x1 == x2 または、y1 == y2 となるような値を渡した場合、 画面に何も描画されなくなることを期待して SetDrawArea を使用しており、 実際そのように動作しているように見受けられます(戻り値も"成功"が返されます)。 これは、SetDrawArea のリファレンスに誤りがあるのでしょうか? それとも、動作に誤りがあるのでしょうか? お手数ですがご確認の程よろしくお願いします。

Page: 1 |

Re: SetDrawAreaのリファレンスについて ( No.1 )
名前:いっち 日時:2010/05/09 23:19

ついでと言っては何ですが、非公開関数の GetDrawScreenSize は SetDrawScreen によって設定されているグラフィックハンドルの描画サイズを得るための関数ではないのでしょうか? 使用してみたところ、ウィンドウのサイズを取得しているようでした。 現状は以下のようなコードで描画対象のサイズを得ているので、何か問題があるわけではありません。 ちょっと「あれ?」っと思っただけです・・・。 > int x, y; > GetGraphSize( GetActiveGraph( ), &x, &y );
Re: SetDrawAreaのリファレンスについて ( No.2 )
名前:管理人 日時:2010/05/10 01:05

> SetDrawArea( 0,0,0,0 ); について 最初は確かにNGだったはずですが、何時からか大丈夫になってたみたいです ( 少なくとも今ソースを確認した限りでは( 何も描画されない )という動作が正常に行われるみたいです ) というわけで「リファレンスが誤っている」ということになります 誤った情報を載せておくのは良くないので、早速リファレンスの該当箇所は削除しました、ご指摘ありがとうございます m(_ _)m > ついでと言っては何ですが、非公開関数の GetDrawScreenSize は > SetDrawScreen によって設定されているグラフィックハンドルの描画サイズを得るための関数ではないのでしょうか? はい、ご指摘の通り GetDrawScreenSize は SetGraphMode で指定したサイズが返ってきます 違和感を覚えられた通り、DrawScreen といえば SetDrawScreen なのに・・・ 今から SetDrawScreen で指定された画像のサイズを返すように仕様を変更しても良いのですが、既に画面サイズを取得する関数として 使用されている可能性が高いので、迷います・・・
Re: SetDrawAreaのリファレンスについて ( No.3 )
名前:いっち 日時:2010/05/10 12:56

> 誤った情報を載せておくのは良くないので、早速リファレンスの該当箇所は削除しました、ご指摘ありがとうございます m(_ _)m 早速の対応ありがとうございます。 > 使用されている可能性が高いので、迷います・・・ お気持ちお察しします。 ウィンドウのクライアントサイズを得る関数としては、公開関数の GetScreenState も存在するだけに迷いますね・・・。 (SetEmulation320x240 を使ったときの動作が違うようですが) (No.1)のレスでも書きましたが個人的には現状の動作に何も問題ありません。 ただ、私が GetDrawScreenSize の使用を考えたのは、SetDrawArea で指定した描画領域をリセットするためです。 ですので、そのような動作をする"ResetDrawArea"といったような関数があると嬉しいです。 (ただこれも、SetDrawArea( 0, 0, 100000, 100000 ); のようにすればいいだけの話なんですよね・・・)
Re: SetDrawAreaのリファレンスについて ( No.4 )
名前:管理人 日時:2010/05/16 20:39

まだ悩んでいます、というか、気持ち悪いですが暫くはこのままにしようと思います 既存の関数の仕様を変更するのも新しい関数を追加するのもちょっと踏ん切りがつかないので・・・ ResetDrawArea についてですが、「SetDrawArea を使っていない状態」、「使っている状態」という 概念が無いので SetDrawAreaFull という名称で関数を追加しました、よろしければお使い下さい m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) // 描画可能領域を描画対象画面全体にする int SetDrawAreaFull( void ) ;
Re: SetDrawAreaのリファレンスについて ( No.5 )
名前:いっち 日時:2010/05/16 21:51

> ResetDrawArea についてですが、「SetDrawArea を使っていない状態」、「使っている状態」という > 概念が無いので SetDrawAreaFull という名称で関数を追加しました、よろしければお使い下さい m(_ _)m 対応ありがとうございます。早速使わせて頂きます。 > まだ悩んでいます、というか、気持ち悪いですが暫くはこのままにしようと思います > 既存の関数の仕様を変更するのも新しい関数を追加するのもちょっと踏ん切りがつかないので・・・ 了解しました。現状で問題ないのに変える必要は無いですね。 なんだか煩わせてしまった様で申し訳ないです。

Page: 1 |