ベジェ曲線の描画(U) <TOP>
連続したベジェ曲線を描画します。
PolyBezierTo ベジェ曲線を描画。開始点はカレントポジションを使用し最後に描画したベジェ曲線の終了点にカレントポジションを設定
MoveToEx 現在位置を受け取るバッファを参照で指定
例では、開始座標をMoveToExで設定しています。数値は配列の座標を表しています。
'================================================================ '= ベジェ曲線の描画(U) '= (PolyBezierTo.bas) '================================================================ #include "Windows.bi" Type POINTAPI x As Long y As Long End Type ' ベジェ曲線を描画。開始点はカレントポジションを使用し最後に描画したベジェ曲線の終了点にカレントポジションを設定 Declare Function Api_PolyBezierTo& Lib "gdi32" Alias "PolyBezierTo" (ByVal hDC&, lppt As POINTAPI, ByVal cCount&) ' 現在位置を受け取るバッファを参照で指定 Declare Function Api_MoveToEx& Lib "gdi32" Alias "MoveToEx" (ByVal hDC&, ByVal x&, ByVal y&, ByVal lpPoint As Any) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var pts(5) As POINTAPI Var hDC As Long Var Ret As Long For x = 0 To GetWidth Step 10 Line(x, 0) - (x, GetHeight), , 14 Next For y = 0 To GetHeight Step 10 Line(0, y) - (GetWidth, y), , 14 Next hDC = Api_GetDC(GethWnd) pts(0).x = 10 : pts(0).y = 50 pts(1).x = 200 : pts(1).y = 20 pts(2).x = 40 : pts(2).y = 120 pts(3).x = 100 : pts(3).y = 250 pts(4).x = 150 : pts(4).y = 60 pts(5).x = 230 : pts(5).y = 120 Ret = Api_MoveToEx(hDC, 10, 50, ByVal 0) Ret = Api_PolyBezierTo(hDC, pts(0), 6) GoSub *DrawPointAndLine Ret = Api_ReleaseDC(GethWnd, hDC) Exit Sub *DrawPointAndLine Pset(pts(0).x, pts(0).y) For i = 1 To 5 Connect(pts(i - 1).x, pts(i - 1).y) - (pts(i).x, pts(i).y), 5 Next SetDrawWidth 3 For i = 0 To 5 Pset(pts(i).x, pts(i).y), 5 Symbol(pts(i).x - 1, pts(i).y + 2), Trim$(Str$(i)), 1, 1 Next SetDrawWidth 0 Return End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End