DrawLine を何回も使用することで曲線を描画することができます
曲線であるサインカーブを描画するプログラムを組んでみましたので、よろしければご覧ください
#include "DxLib.h"
#include <math.h>
// DrawLine を行う数
#define LINE_NUM (64)
// 描画する sin の角度の範囲
#define ANGLE_AREA (DX_PI * 6.0f)
// 一回の DrawLine で描画する角度の範囲
#define UNIT_ANGLE (ANGLE_AREA / LINE_NUM)
// 描画範囲の幅と高さ
#define DRAW_W (640)
#define DRAW_H (200)
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
float angle ;
float Sin1, Sin2 ;
// ウインドウモードで起動
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1 ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// サインカーブの描画開始角度を初期化
angle = 0.0f ;
// メインループ
while( ProcessMessage() == 0 )
{
// 画面のクリア
ClearDrawScreen() ;
// サインカーブの描画開始角度を更新
angle += 0.1f ;
// サインカーブの描画
Sin1 = ( float )sin( angle ) ;
for( int i = 0 ; i < LINE_NUM ; i ++ )
{
Sin2 = ( float )sin( angle + ( i + 1 ) * UNIT_ANGLE ) ;
DrawLine(
i * DRAW_W / LINE_NUM,
Sin1 * DRAW_H + 240,
( i + 1 ) * DRAW_W / LINE_NUM,
Sin2 * DRAW_H + 240,
GetColor( 255,255,255 )
) ;
Sin1 = Sin2 ;
}
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
DrawLine は直線なので上記のプログラムでは少しサインカーブがカクカクしていますが、
#define LINE_NUM (64)
↑こちらの部分の数値を
#define LINE_NUM (256)
↑このように増やすとカクカクが解消されます( ただ、数値が大きくなればなるほど処理負荷が高くなります )
あと、DrawLine の代わりにアンチエイリアス付きの線の描画を行う DrawLineAA を使用すると
線自体のカクカク感が無くなります( ただ、カクカク感が無くなる代わりに処理負荷が高くなります )