トップページ > 記事閲覧
図形描画関係での要望です
名前:だみあん 日時: 2014/11/16 04:30

図形描画関係での要望です。 DrawCircleGaugeという物がありますが、 これは画像を円グラフ的に描画を行うものですよね。 そこで画像を使わない、色指定のDrawCircleの角度指定版、 という物が欲しいです。 最終的には角丸四角形(RoundRect)が描画したかったりします。 現存する描画機能のみですと、DrawCircleとDrawBoxの組み合わせでも出来ますが その場合重なり合う部分が出来るため、半透明にすることが出来ません。 DrawCircleの角度指定版があれば、四隅の角に1/4の円を描画することで問題は解決するのですが。 もっといえば、DrawBoxの角の丸みを指定するDrawRoundRectみたいなのがあればベターなのですが それは望みすぎかも知れません。(既存の機能の組み合わせパターンなので……。) 次に、ZBufferへの図形描画機能での要望です。 現在ではZBufferへの図形描画機能は DrawBoxToZBuffer DrawCircleToZBuffer の二つしかありません。(画像ハンドル使用版除く) DrawTriangle DrawQuadrangle DrawCircleの角度指定版 のToZBufferを追加して欲しいです。 というのもここ最近、画面遷移のエフェクト周りを作っていまして。 ブラインド風に等間隔に少しずつ画像が表示される、と言うようなエフェクトを 以前はSetDrawAreaを使って実装していた物をZBufferマスク使用版に組み直していたところ (ZBuffer使用にするとかなり速度が向上するのでZBufferによるマスク機能万歳です) そこでふと、このブラインドを斜めに出来ないか。 と思ったのですが。 現行の機能では実現出来なさそうです。 (捨て画像つかってDrawRotaGraphToZBufferとかすれば無理には出来そうですが……) DrawBoxの角度指定版(DrawRotaGraphのBox版)のような物があるとよいのですが 回転後の描画の開始位置を計算で出せばDrawQuadrangleでDrawBoxの回転版の様な物も出来るなということで DrawQuadrangleのToZBuffer版が欲しいと思いました。(こっちの方が応用範囲は広がるので) そしてDrawTriangleもしくはDrawCircleの角度指定版のToZBufferがあると 扇が広がるような感じ(車のワイパーみたいな動きと言った方がわかりやすい?)のような ワイプ機能のようなものも出来そうで面白いなと思ったりしまして。 ということでZBuffer周りの描画機能の追加を希望します。 ご一考いただけますと幸いです。
メンテ

Page: 1 |

Re: 図形描画関係での要望です ( No.1 )
名前:管理人 日時:2014/11/17 03:04

角度指定可能版の DrawCircle を実装するより、DrawRoundRect を実装するほうが簡単だったので、 DrawRoundRect を追加しました // 角の丸い四角形を描画する int DrawRoundRect( int x1, int y1, int x2, int y2, int rx, int ry, int Color, int FillFlag ) ; // Zバッファに対して角の丸い四角形を描画する int DrawRoundRectToZBuffer( int x1, int y1, int x2, int y2, int rx, int ry, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; ただ、内部で SetDrawArea と DrawOval と DrawBox を組み合わせた突貫実装なので、 FillFlag を FALSE にして輪郭線だけ描画する指定にした場合、円の半径である rx と ry の値の差を極端にすると線が途切れます 上記関数を追加したバージョンをこちらにアップしましたので、よろしければお試しください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: 図形描画関係での要望です ( No.2 )
名前:だみあん 日時:2014/11/18 05:32

機能追加、ありがとうございます。 もともと、画面遷移エフェクトなどでSetDrawAreaを使用した物を ZBufferを使った物に書き直していて、そこでかなりの速度差を実感していまして。 SetDrawArea=遅い。  という固定観念を持ってしまっていた様です。 そこで、透過出来る形のRoundRectというと、マスクを使う方法はすぐに浮かんだのですが ZBufferで実装するには用途的に局所的すぎるかなとおもい (別の場所でZBuffer使用中の中で入れ子に使用等になると問題が起きそう) SetDrawAreaを使わない方法でのRoundRectの実現方法として 角度指定版のDrawCircleが欲しかった、と言うところだったのです。 が、今になって思えば、 画面遷移エフェクトなどでの、画面を数十に細切れに分割するためにSetDrawAreaを何度も使う と言うような用法ゆえにZBuffer使用版に置き換えたときの速度差が如実に出たのであって RoundRectのためのたった1回や2回のSetDrawAreaでは、 そんなコストは掛からないですよね……。 ということで、DrawRoundRectありがたく使わせていただくことにします(ぺこり それから、 同じ図形描画系というのと、RoundRectの用途にも使えるということで 一緒くたに書いてしまった所為で混同されてしまったのかも知れませんが (スレッドを分けようかとも思ったのですが、共通する部分もあったもので……) DrawTriangle DrawQuadrangle (と一応、可能であればDrawCircleの角度指定版も) のToZBuffer版の追加の要望はRoundRectとはまた別の話で こちらの方は、要は、ZBufferをつかって斜めにマスキング出来る方法が欲しい。 と言うことです。 DrawCircleの角度指定版のToZBuffer版というのも 斜めにマスキング出来る機能の一例としてあげたために 余計に混ざってしまったのかも知れません。 なんだか管理人様、最近お忙しいとのことなので誠に恐縮なのですが 特に急いでいるワケでもありませんので、また落ち着いたときにでも ToZBuffer系の機能追加を考えていただけますでしょうか。
メンテ
Re: 図形描画関係での要望です ( No.3 )
名前:管理人 日時:2014/11/19 02:55

あ、すみません、申し忘れていました、No.1 のバージョンに ToZBuffer の関数も追加済みです int DrawTriangleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; int DrawQuadrangleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; int DrawRoundRectToZBuffer( int x1, int y1, int x2, int y2, int rx, int ry, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ; よろしければお使いください
メンテ
Re: 図形描画関係での要望です ( No.4 )
名前:だみあん(済み) 日時:2014/11/26 04:48

>ToZBuffer の関数も追加済みです まさかすでに追加されているとは思いませんでした。 おかげさまで、斜めにマスキングした画面遷移のエフェクトを 作ることが出来ました。 機能追加ありがとうございました(ぺこり
メンテ

Page: 1 |

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

   クッキー保存