トップページ > 記事閲覧
DrawBoxへのグラデーション機能について
名前:へけぽん 日時: 2017/06/16 15:35

DrawBoxで色を指定した図形を描画することが出来ますが、単色になります 「左端(上端)の色と右端(下端)の色を指定して、徐々に色が変化していく四角形」を描画する関数などは無いのでしょうか? というのも、WOLF RPGエディターというDXライブラリを用いて作られたツールに <GRADX-rgb-RGB>  というコマンドがあり rgbを左端のRGB値、RGBを右端のRGB値として横グラデーションの四角形を表示する機能があるのです これはユーザーが画像を用意する必要が無く、グラデーション付き四角形を指定したサイズで表示できるというコマンドなのですが ツールがDXライブラリ製という事を考えると、DXライブラリに同様の効果を持つ関数があるのではないかと思い 探してみたのですが自力では見つけられなかったので質問させていただきました
メンテ

Page: 1 |

Re: DrawBoxへのグラデーション機能について ( No.1 )
名前:管理人 日時:2017/06/17 13:02

> 「左端(上端)の色と右端(下端)の色を指定して、徐々に色が変化していく四角形」を描画する関数などは無いのでしょうか? そのままの機能を持つ関数はありませんが、DrawPolygon2D などのポリゴン描画機能をしようすることで 実現することができます DrawPolygon2D を使用して横方向のグラデーションの四角形を描画するサンプルを作成してみましたので、 よろしければご覧ください m(_ _)m #include "DxLib.h" // 横方向のグラデーションの四角形を描画する void GradX_RGB( int x1, int y1, int x2, int y2, BYTE r1, BYTE g1, BYTE b1, BYTE r2, BYTE g2, BYTE b2 ) { VERTEX2D Vertex[ 6 ] ; // 左上の頂点の情報をセット( 1ポリゴン目の第1頂点 ) Vertex[ 0 ].pos.x = ( float )x1 ; Vertex[ 0 ].pos.y = ( float )y1 ; Vertex[ 0 ].pos.z = 0.0f ; Vertex[ 0 ].rhw = 1.0f ; Vertex[ 0 ].dif.r = r1 ; Vertex[ 0 ].dif.g = g1 ; Vertex[ 0 ].dif.b = b1 ; Vertex[ 0 ].dif.a = 255 ; Vertex[ 0 ].u = 0.0f ; Vertex[ 0 ].v = 0.0f ; // 右上の頂点の情報をセット( 1ポリゴン目の第2頂点 ) Vertex[ 1 ].pos.x = ( float )x2 ; Vertex[ 1 ].pos.y = ( float )y1 ; Vertex[ 1 ].pos.z = 0.0f ; Vertex[ 1 ].rhw = 1.0f ; Vertex[ 1 ].dif.r = r2 ; Vertex[ 1 ].dif.g = g2 ; Vertex[ 1 ].dif.b = b2 ; Vertex[ 1 ].dif.a = 255 ; Vertex[ 1 ].u = 0.0f ; Vertex[ 1 ].v = 0.0f ; // 左下の頂点の情報をセット( 1ポリゴン目の第3頂点 ) Vertex[ 2 ].pos.x = ( float )x1 ; Vertex[ 2 ].pos.y = ( float )y2 ; Vertex[ 2 ].pos.z = 0.0f ; Vertex[ 2 ].rhw = 1.0f ; Vertex[ 2 ].dif.r = r1 ; Vertex[ 2 ].dif.g = g1 ; Vertex[ 2 ].dif.b = b1 ; Vertex[ 2 ].dif.a = 255 ; Vertex[ 2 ].u = 0.0f ; Vertex[ 2 ].v = 0.0f ; // 右下の頂点の情報をセット( 2ポリゴン目の第1頂点 ) Vertex[ 3 ].pos.x = ( float )x2 ; Vertex[ 3 ].pos.y = ( float )y2 ; Vertex[ 3 ].pos.z = 0.0f ; Vertex[ 3 ].rhw = 1.0f ; Vertex[ 3 ].dif.r = r2 ; Vertex[ 3 ].dif.g = g2 ; Vertex[ 3 ].dif.b = b2 ; Vertex[ 3 ].dif.a = 255 ; Vertex[ 3 ].u = 0.0f ; Vertex[ 3 ].v = 0.0f ; // 2ポリゴン目の第2頂点は左下の頂点なのでコピー Vertex[ 4 ] = Vertex[ 2 ] ; // 2ポリゴン目の第3頂点は右上の頂点なのでコピー Vertex[ 5 ] = Vertex[ 1 ] ; // ポリゴンを2個描画 DrawPolygon2D( Vertex, 2, DX_NONE_GRAPH, FALSE ) ; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // 画面のクリア ClearDrawScreen() ; // グラデーションの四角形を描画 GradX_RGB( 10, 200, 630, 280, 255, 128, 0, 0, 255, 128 ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; // キー入力待ち WaitKey() ; // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ
Re: DrawBoxへのグラデーション機能について ( No.2 )
名前:へけぽん(解決) 日時:2017/06/17 13:33

回答ありがとうございます
メンテ

Page: 1 |

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

   クッキー保存