トップページ > 記事閲覧
DrawRectGraphFについて
名前:SIN 日時: 2024/05/24 12:44

DrawRectGraphFを使っているのですが、float値で描画している画像を移動させると、位置が微妙にズレて黒い線が現れます。 整数値を使って位置を変更すると問題ありません。 PCのグラボに関係する問題でしょうか。 プログラムとしては、下記のような形で書いています。※処理を更新する場合に、pos.x以外の数値は、変更していません。 もし、考えられる原因がございましたら、教えていただけますでしょうか。 //初期化 vec.x -= 0.3f; −略− //更新処理 pos.x += vec.x; −略− //描画処理 DrawRectGraphF( pos.x, pos.y + UPSIDE, cutX, cutY, ImgWidth, ImgHeight, img, true );
メンテ

Page: 1 |

Re: DrawRectGraphFについて ( No.1 )
名前:管理人 日時:2024/05/25 00:53

すみません、DrawRectGraphF は原理上 SrcX, SrcY, Width, Height で指定された 描画元画像の範囲から1ドット外側の部分も描画されてしまうことがあります なので、申し訳ありませんが SrcX, SrcY, Width, Height で指定する描画元画像の 範囲の外側1ドットは描画されてしまっても問題の無い色( 透明色など )にしておいてください m(_ _;m
メンテ
Re: DrawRectGraphFについて ( No.2 )
名前:SIN 日時:2024/05/25 09:21

ご返信ありがとうございます。 描画領域について理解しました。ありがとうございます。 ついでの質問で申し訳ないのですが、通常のDrawRectGraphであれば、問題ないのでしょうか。 お忙しいところ恐縮ですが、ご返信いただけると助かります。
メンテ
Re: DrawRectGraphFについて ( No.3 )
名前:管理人 日時:2024/05/26 03:07

> ついでの質問で申し訳ないのですが、通常のDrawRectGraphであれば、問題ないのでしょうか。 はい、DrawRectGraphF で端の1ドット外側の色が描画されてしまう原因は浮動小数点以下の値を 扱っていることによるものですので、整数値で処理される DrawRectGraph であれば問題は発生しません
メンテ
Re: DrawRectGraphFについて ( No.4 )
名前:SIN 日時:2024/05/27 10:21

ご返信ありがとうございます。 描画領域について変更を加えたのですが(周り1ドット透明色)、やはり黒い線が出てきます。 申し訳ございませんが、プログラムを送るので確認をしてもらえないでしょうか。 よろしくお願いいたします。
メンテ
Re: DrawRectGraphFについて ( No.5 )
名前:管理人 日時:2024/05/27 22:49

> 描画領域について変更を加えたのですが(周り1ドット透明色)、やはり黒い線が出てきます。 ううむそうでしたか… > 申し訳ございませんが、プログラムを送るので確認をしてもらえないでしょうか。 はい、こちらのメールアドレスに BQE00322(あっとまーく)nifty.com ( (あっとまーく) を @ に置き換えてください ) zip等で圧縮して送っていただければ拝見いたします m(_ _)m
メンテ
Re: DrawRectGraphFについて ( No.6 )
名前:管理人 日時:2024/06/01 00:36

メールを拝見いたしました > 描画領域について変更を加えたのですが(周り1ドット透明色)、やはり黒い線が出てきます。 すみません、No.1 のご返信の段階から指定の範囲の外側の1ドットが描画されてしまうことが原因だと 勘違いしていたのですが、最初のご投稿で SINさんが申し上げている通り 『float値で描画している画像を移動させると、位置が微妙にズレて黒い線が現れる』 ↑こちらが原因でした こちらはfloatの計算上にそのようになるものですので、グラボなどは関係ありません この現象は MakeScreen で作成した仮の画面に対して DrawRectGraphF を使わずに DrawRectGraph を 使用して、浮動小数点以下の値を含まない座標で綺麗にブロックを並べて描画した後、裏画面に対して 仮の画面を DrawGraphF を使用して描画するという方法で防ぐことができます 〜〜〜 初期化のタイミング 〜〜〜 // 仮画面を作成 Screen = MakeScreen( 画面の横幅, 画面の縦幅, TRUE ); 〜〜〜 メインループの描画処理 〜〜〜 // 仮の画面を描画先にする SetDrawScreen( Screen ); // 仮の画面をクリア ClearDrawScreen(); // ブロックを整数値で綺麗に並べて描画 for( int i = 0; i < ブロックの縦の数; i++ ) { for( int j = 0; j < ブロックの横の数; j++ ) { DrawRectGraph( j * 32, i * 32, 0, 0, 32, 32, BlockImage[ 0 ], TRUE ) ; } } // 裏画面に描画先を変更 SetDrawScreen( DX_SCREEN_BACK ); // DrawGraphF を使用して浮動小数点以下の値を含む座標に描画してもブロックとブロックの間の隙間は発生しない DrawGraphF( 0.5f, 0.0f, Screen, TRUE ); よろしければお試しください m(_ _)m
メンテ
Re: DrawRectGraphFについて(解決) ( No.7 )
名前:SIN 日時:2024/06/01 17:22

ありがとうございます。 早速、試してみます。
メンテ
Re: DrawRectGraphFについて ( No.8 )
名前:管理人 日時:2024/06/05 22:02

メールと添付のプログラムを拝見しました まだ黒いラインが出現してしまうとのことですが、マップチップの描画に DrawRectGraphF を 使用しているのが原因だと思います No.6 に申し上げました通り DrawRectGraphF ではなく DrawRectGraph を使用していただければ 黒いラインは出なくなると思いますので、よろしければお試しください m(_ _)m
メンテ
Re: DrawRectGraphFについて ( No.9 )
名前:SIN 日時:2024/06/07 10:43

お世話になっております。 返信が遅くなり申し訳ございません。 ありがとうございます。そちらの部分を見落としておりました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存