複数の閉じた多角形を描画          <TOP>


PolyPolygon 複数の閉じた多角形を描画

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

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

 

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

参照

多角形の描画

 

'================================================================
'= 複数の閉じた多角形を描画
'=    (PolyPolygon.bas)
'================================================================
#include "Windows.bi"

Type POINTAPI
    x As Long
    y As Long
End Type

' 複数の閉じた多角形を描画
Declare Function Api_PolyPolygon& Lib "gdi32" Alias "PolyPolygon" (ByVal hDC&, lpPoint As POINTAPI, lpPolyCounts&, ByVal nCount&)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
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 pts(6) As POINTAPI
    Var numpoints(1) As Long
    Var hDC As Long
    Var Ret As Long

    'デバイスコンテキスト取得
    hDC = Api_GetDC(GethWnd)
    
    '□のポイント
    pts(0).x = 20 : pts(0).y = 20
    pts(1).x = 220: pts(1).y = 20
    pts(2).x = 200: pts(2).y = 60
    pts(3).x = 20 : pts(3).y = 80
    numpoints(0) = 4
    
    '△のポイント
    pts(4).x = 100: pts(4).y = 0
    pts(5).x = 50 : pts(5).y = 100
    pts(6).x = 200: pts(6).y = 90
    numpoints(1) = 3
    
    '□と△のポリゴン描画
    Ret = Api_PolyPolygon(hDC, pts(0), numpoints(0), 2)

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

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