> 「左端(上端)の色と右端(下端)の色を指定して、徐々に色が変化していく四角形」を描画する関数などは無いのでしょうか?
そのままの機能を持つ関数はありませんが、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 ;
}