折れ線グラフを作るときなんかに使用しそうだ。使う機会が無いな〜。それより構造体の配列を自作関数やAPI関数に引数として渡すサンプルと言った方が利便性があるように聞こえる(笑) フォームモジュールにコピペして実行するべし。今回は標準モジュールの使用は無い。
Private Type POINTAPI
'連続した線分を一括して描画する
'----------------------------------------------------------------------- ' 関数名 : DrawPolyline ' 機能 : 線分を描画する ' 引数 : (in) hDC … デバイスコンテキストのハンドル ' (in) udtPointAPI … POINTAPI構造体の配列 ' 戻り値 : 1…正常終了 0…異常終了 '----------------------------------------------------------------------- Private Function DrawPolyline(ByVal hDC As Long, _ ByRef udtPointAPI() As POINTAPI) As Long DrawPolyline = Polyline(hDC, udtPointAPI(0), UBound(udtPointAPI)) End Function Private Sub Form_Load() Dim udtP(9) As POINTAPI With Me .Cls .ScaleMode = vbPixels .AutoRedraw = True udtP(0).x = 60: udtP(0).y = 68 udtP(1).x = 10: udtP(1).y = 30 udtP(2).x = 10: udtP(2).y = 68 udtP(3).x = 60: udtP(3).y = 68 udtP(4).x = 60: udtP(4).y = 30 udtP(5).x = 35: udtP(5).y = 5 udtP(6).x = 10: udtP(6).y = 30 udtP(7).x = 60: udtP(7).y = 30 udtP(8).x = 10: udtP(8).y = 68 udtP(9).x = 60: udtP(9).y = 68 '線分を描画する Call DrawPolyline(.hDC, udtP()) .Refresh End With End Sub
↓こういうことも出来るようだ。
'連続した線分を一括して描画する
'----------------------------------------------------------------------- ' 関数名 : DrawPolyline ' 機能 : 線分を描画する ' 引数 : (in) hDC … デバイスコンテキストのハンドル ' (in) udtPointAPI … POINTAPI構造体の配列 ' 戻り値 : 1…正常終了 0…異常終了 '----------------------------------------------------------------------- Private Function DrawPolyline(ByVal hDC As Long, _ ByRef Pos() As Long) As Long DrawPolyline = Polyline(hDC, Pos(0, 0), UBound(Pos, 2)) End Function Private Sub Form_Load() Dim Pos(1, 9) As Long With Me .Cls .ScaleMode = vbPixels .AutoRedraw = True Pos(0, 0) = 60: Pos(1, 0) = 68 Pos(0, 1) = 10: Pos(1, 1) = 30 Pos(0, 2) = 10: Pos(1, 2) = 68 Pos(0, 3) = 60: Pos(1, 3) = 68 Pos(0, 4) = 60: Pos(1, 4) = 30 Pos(0, 5) = 35: Pos(1, 5) = 5 Pos(0, 6) = 10: Pos(1, 6) = 30 Pos(0, 7) = 60: Pos(1, 7) = 30 Pos(0, 8) = 10: Pos(1, 8) = 68 Pos(0, 9) = 60: Pos(1, 9) = 68 '線分を描画する Call DrawPolyline(.hDC, Pos()) .Refresh End With End Sub |