連続した線分を一度に複数個描画          <TOP>


PolyPolyline 連続した線分を一度に複数個描画

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

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

 

例では、四角形と三角形を一度に描画しています。

 

'================================================================
'= 連続した線分を一度に複数個描画
'=    (PolyPolyline.bas)
'================================================================
#include "Windows.bi"

Type POINTAPI
    x As Long
    y As Long
End Type

' 連続した線分を一度に複数個描画
Declare Function Api_PolyPolyline& Lib "gdi32" Alias "PolyPolyline" (ByVal hDC&, lppt As POINTAPI, lpdwPolypts&, ByVal cCount&)

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

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

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var hDC As Long
    Var pts(8) As POINTAPI
    Var numpts(1) As Long
    Var Ret As Long

    'デバイスコンテキスト取得
    hDC = Api_GetDC(GethWnd)

    '△のポイント
    pts(0).x = 50 : pts(0).y = 10
    pts(1).x = 200: pts(1).y = 100
    pts(2).x = 10 : pts(2).y = 100
    pts(3).x = 50 : pts(3).y = 10
    numpts(0) = 4

    '□のポイント
    pts(4).x = 100: pts(4).y = 10
    pts(5).x = 200: pts(5).y = 10
    pts(6).x = 230: pts(6).y = 90
    pts(7).x =  50: pts(7).y = 60
    pts(8).x = 100: pts(8).y = 10
    numpts(1) = 5

    '△と□の線分を一度に描画
    Ret = Api_PolyPolyline(hDC, pts(0), numpts(0), 2)

    'デバイスコンテキスト解放
    Ret = Api_ReleaseDC(GethWnd, hDC)
End Sub

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