連続した直線を描画(V)          <TOP>


連続した直線を描画します。例では1〜12月の折れ線グラフのつもりです。

Polyline 複数の線分からなる連続した線を描画

GetDC デバイスコンテキストのハンドルを取得

ReleaseDC デバイスコンテキストを解放

 

 

'================================================================
'= 連続した直線を描画(V)
'=    (Polyline3.bas)
'================================================================
#include "Windows.bi"

Type POINTAPI
    x As Long
    y As Long
End Type

' 複数の線分からなる連続した線を描画(実行後はペンの現在位置が変更されない)
Declare Function Api_Polyline& Lib "gdi32" Alias "Polyline" (ByVal hDC&, lpPoint As POINTAPI, ByVal nCount&)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared pa(11) As POINTAPI

Var Shared Picture1 As Object
Picture1.Attach GetDlgItem("Picture1")
 
'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var phDC As Long
    Var mm As Integer
    Var Corner As Long
    Var Ret As Long

    Randomize Time

    'Picture1のデバイスコンテキスト
    phDC = Api_GetDC(Picture1.GethWnd)

    '連続直線の点の数
    Corner = 12

    '連続線分の座標
    Picture1.Cls
    Picture1.SetDrawWidth 3
    For mm = 0 To 11
        pa(mm).x = (mm + 1) * 20 - 15
        pa(mm).y = Rnd(1) * 70

        Picture1.Pset(pa(mm).x, pa(mm).y), 0
        Picture1.Symbol(pa(mm).x - 4, pa(mm).y + 4), Trim$(Str$(mm + 1)), 1, 1, 5
    Next
    Picture1.SetDrawWidth 0
    
    '連続した線分を描画
    Ret = Api_Polyline(phDC, pa(0), Corner)
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var Ret As Long

    Ret = Api_ReleaseDC(Picture1.GethWnd, phDC)
    End
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End