トップページ > 記事閲覧
曲線を書くにはどうしたら良いですか?
名前:くー 日時: 2020/07/15 19:59

真っ直ぐな線を引くことは出来ますが曲線を書く関数が見当たらないです。 どうすれば出来ますか?
メンテ

Page: 1 |

Re: 曲線を書くにはどうしたら良いですか? ( No.1 )
名前:管理人 日時:2020/07/17 02:18

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 を使用すると 線自体のカクカク感が無くなります( ただ、カクカク感が無くなる代わりに処理負荷が高くなります )
メンテ
Re: 曲線を書くにはどうしたら良いですか? ( No.2 )
名前:くー(解決) 日時:2020/07/17 09:10

有難う御座いました。
メンテ

Page: 1 |

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

   クッキー保存