トップページ > 記事閲覧
DrawRectGraphについて
名前:north 日時: 2015/06/24 19:54

いつもご質問に答えてくださりありがとうございます。 今回お聞きしたいのはDrawRectGraph関数についてなのですが、これを使ってゲージの量を表したいと思っているのですが、 ゲージが縦長ですと下から消えるようになるのですが これを上から消したい場合はどうしたらよろしいでしょうか? プログラムは下記の通りとなっております。 //---------------------------------------------------------------------------- void CUI::GetSize() { GetGraphSize(tBariaGageParam.Handle, &tBariaGageParam.Width, &tBariaGageParam.Height); MaxBariaHeight = tBariaGageParam.Height; } //---------------------------------------------------------------------------- void CUI::CheckBariaGage(CModel::BARIA_PARAM bariaparam) { if(bariaparam.Flag == BARIATRUE) { tBariaGageParam.SrcZ += tBariaGageParam.DownGage; if(tBariaGageParam.SrcZ >= MaxBariaHeight) { tBariaGageParam.SrcZ = MaxBariaHeight; } } else { tBariaGageParam.SrcZ -= tBariaGageParam.UpGage; if(tBariaGageParam.SrcZ <= 0) { tBariaGageParam.SrcZ = 0; } } } //---------------------------------------------------------------------------- void CUI::DrawBariaGage() { DrawRectGraph(tBariaGageParam.Pos.x, tBariaGageParam.Pos.z, tBariaGageParam.SrcX, tBariaGageParam.SrcZ, tBariaGageParam.Width, tBariaGageParam.Height, tBariaGageParam.Handle, TRUE, TRUE); }
メンテ

Page: 1 |

Re: DrawRectGraphについて ( No.1 )
名前:管理人 日時:2015/06/25 01:29

ゲージの表現でしたら DrawRectGraph を使用するよりも SetDrewArea を使用したほうが簡単なような気がします・・・ ( ゲージ自体は固定の座標に DrawGraph で描画して、描画される範囲を SetDrawArea で調節する感じです ) よろしければ SetDrawArea を使って実装してみてください
メンテ
Re: DrawRectGraphについて ( No.2 )
名前:north 日時:2015/06/25 02:36

ありがとうございます。 現時点ではDrawModiGraphを使用して実装いたしましたがそのような方法もあるのですね。 ただ、仕様を見てみたのですがSetDrawAreaを使用すると他の描画物にも影響が及ぶのではないでしょうか? 見た限りだと描画する範囲を指定する関数みたいでしたので・・・・・ 実際にやってみたのですがゲージだけが描画され他は何も描画されておりませんでした。 一応変更したプログラムです。 //---------------------------------------------------------------------------- void CUI::GetSize() { GetGraphSize(tBariaGageParam.Handle, &tBariaGageParam.Width, &tBariaGageParam.Height); MaxBariaHeight = tBariaGageParam.Height; FirstBariaGagePosZ = tBariaGageParam.Pos.z; } //---------------------------------------------------------------------------- void CUI::CheckBariaGage(CModel::BARIA_PARAM bariaparam) { if(bariaparam.Flag == BARIATRUE) { tBariaGageParam.Pos.z += tBariaGageParam.DownGage; if(tBariaGageParam.Pos.z >= FirstBariaGagePosZ + MaxBariaHeight) { tBariaGageParam.Pos.z = FirstBariaGagePosZ + MaxBariaHeight; } } else { tBariaGageParam.Pos.z -= tBariaGageParam.UpGage; if(tBariaGageParam.Pos.z <= FirstBariaGagePosZ) { tBariaGageParam.Pos.z = FirstBariaGagePosZ; } } } //---------------------------------------------------------------------------- void CUI::DrawBariaGage() { //GraphFilter(tBariaGageParam.Handle, DX_GRAPH_FILTER_BRIGHT_CLIP, DX_CMP_LESS, 255, TRUE, GetColor(255, 0, 0), 255); /*DrawModiGraph(tBariaGageParam.Pos.x, tBariaGageParam.Pos.z, tBariaGageParam.Pos.x + tBariaGageParam.Width, tBariaGageParam.Pos.z, tBariaGageParam.Pos.x + tBariaGageParam.Width, FirstBariaGagePosZ + tBariaGageParam.Height, tBariaGageParam.Pos.x, FirstBariaGagePosZ + tBariaGageParam.Height, tBariaGageParam.Handle, TRUE);*/ DrawGraph(tBariaGageParam.Pos.x, tBariaGageParam.Pos.z, tBariaGageParam.Handle, FALSE); SetDrawArea(tBariaGageParam.Pos.x, tBariaGageParam.Pos.z, tBariaGageParam.Pos.x + tBariaGageParam.Width, FirstBariaGagePosZ + MaxBariaHeight); }
メンテ
Re: DrawRectGraphについて ( No.3 )
名前:管理人 日時:2015/06/25 02:55

SetDrawArea(tBariaGageParam.Pos.x, tBariaGageParam.Pos.z, tBariaGageParam.Pos.x + tBariaGageParam.Width, FirstBariaGagePosZ + MaxBariaHeight); ↑こちらを DrawGraph の前に移動して、DrawGraph の後に SetDrawArea( 0, 0, 10000, 10000 ) ; ↑こちらのような記述を追加して SetDrewArea の設定をリセットすれば意図した通りに動作すると思います
メンテ
Re: DrawRectGraphについて ( No.4 )
名前:north(解決) 日時:2015/06/28 22:21

お礼が遅くなり申し訳ありません。 無事に教えていただいた通りの方法で実装できました。 ありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存