【API Function】


線分以外の描画

 円や楕円を描画するには、一般的にCircleメソッドが使われますが、 線分同様に高速な描画ができません。また、Circleメソッドでは円弧も 描くことができますが、APIを使用すればもっと汎用的に、しかも簡単に 扇形や弓形を描くことができます。  線分以外の描画関数の一覧を下に示しました。

API関数 描画内容 使用例
SetPixel SetPixel Picture1.hdc, x, y, PENCOLOR
Rectangle 長方形 Rectangle Picture1.hdc, lx, ty, rx, by
RoundRect 角の丸い長方形 RoundRect Picture1.hdc, lx, ty, rx, by, wx, hy
Ellips 円・楕円形 Ellipse Picture1.hdc, lx, ty, rx, by
Arc 円・楕円弧 Arc Picture1.hdc, lx, ty, rx, by, sx, sy, ex, ey
Chord 弓形 Chord Picture1.hdc, lx, ty, rx, by, sx, sy, ex, ey
Pie 扇形 Pie Picture1.hdc, lx, ty, rx, by, sx, sy, ex, ey


 宣言コードと引数についての説明は以下に示すとおりです。 よく見たら宣言コードしかないですね。(^^)あまり意味なかったかも・・・。 単に「まとめたもの」と思って、あまり期待しないで見ていって下さい。

'線分以外の描画API
'===========================================================
'SetPixel    指定座標に点を描く
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:指定座標
'crColor:点の色
'===========================================================
Private Declare Function SetPixel Lib "gdi32" _
        (ByVal hdc As Long, ByVal x As Long, _
        ByVal y As Long, ByVal crColor As Long) As Long

'===========================================================
'Rectangle    長方形を描画する
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:長方形の左上隅の座標
'X2,Y2:長方形の右下隅の座標
'===========================================================
Private Declare Function Rectangle Lib "gdi32" _
        (ByVal hdc As Long, ByVal X1 As Long, _
        ByVal Y1 As Long, ByVal X2 As Long, _
        ByVal Y2 As Long) As Long

'===========================================================
'RoundRect    角の丸い長方形を描画する
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:長方形の左上隅の座標
'X2,Y2:長方形の右下隅の座標
'X3,Y3:角の丸みの幅と高さ
'===========================================================
Private Declare Function RoundRect Lib "gdi32" _
        (ByVal hdc As Long, ByVal X1 As Long, _
        ByVal Y1 As Long, ByVal X2 As Long, _
        ByVal Y2 As Long, ByVal X3 As Long, _
        ByVal Y3 As Long) As Long

'===========================================================
'Ellipse    楕円形を描画する
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:楕円に外接する長方形の左上隅の座標
'X2,Y2:楕円に外接する長方形の右下隅の座標
'===========================================================
Private Declare Function Ellipse Lib "gdi32" _
        (ByVal hdc As Long, ByVal X1 As Long, _
        ByVal Y1 As Long, ByVal X2 As Long, _
        ByVal Y2 As Long) As Long

'===========================================================
'Arc    楕円弧を描画する
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:楕円に外接する長方形の左上隅の座標
'X2,Y2:楕円に外接する長方形の右下隅の座標
'X3,Y3:楕円弧の始点座標
'X4,Y4:楕円弧の終点座標
'===========================================================
Private Declare Function Arc Lib "gdi32" _
        (ByVal hdc As Long, ByVal X1 As Long, _
        ByVal Y1 As Long, ByVal X2 As Long, _
        ByVal Y2 As Long, ByVal X3 As Long, _
        ByVal Y3 As Long, ByVal X4 As Long, _
        ByVal Y4 As Long) As Long

'===========================================================
'Chord    弓形を描画する
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:楕円に外接する長方形の左上隅の座標
'X2,Y2:楕円に外接する長方形の右下隅の座標
'X3,Y3:楕円弧の始点座標
'X4,Y4:楕円弧の終点座標
'-----------------------------------------------------------
'楕円弧と、2つの端点を結んだ直線を描画するため引数が楕円弧と同じ
'===========================================================
Private Declare Function Chord Lib "gdi32" (ByVal _
        hdc As Long, ByVal X1 As Long, ByVal Y1 _
        As Long, ByVal X2 As Long, ByVal Y2 _
        As Long, ByVal X3 As Long, ByVal Y3 _
        As Long, ByVal X4 As Long, ByVal Y4 _
        As Long) As Long

'===========================================================
'Pie    扇形を描画する
'---------引数----------------------------------------------
'hdc:描画先デバイスコンテキスト
'X1,Y1:楕円に外接する長方形の左上隅の座標
'X2,Y2:楕円に外接する長方形の右下隅の座標
'X3,Y3:楕円弧の始点座標
'X4,Y4:楕円弧の終点座標
'-----------------------------------------------------------
'楕円弧と、2つの端点を結んだ直線を描画するため引数が楕円弧と同じ
'===========================================================
Private Declare Function Pie Lib "gdi32" _
(ByVal hdc As Long, ByVal X1 As Long, _ ByVal Y1 As Long, ByVal X2 As Long, _ ByVal Y2 As Long, ByVal X3 As Long, _ ByVal Y3 As Long, ByVal X4 As Long, _ ByVal Y4 As Long) As Long

 上記の関数の中で、Arc,Chord,Pie関数の引数について補足しておきます。 それぞれのX3,Y3,X4,Y4について、これらは弧の描かれる範囲を指定するものです。 この(X3,Y3),(X4,Y4)と楕円の中心座標を結ぶ線分とその楕円とのそれぞれの 交点の範囲が描かれる部分で、描画は左回りに行われます。つまり (X3,Y3)=(X4,Y4)であれば、楕円が描かれます。


API Functionインデックス トップ


Copyright(C)2000 Tomoya. All rights reserved.