角の丸い矩形を描画するには

角の丸い矩形を描画してみます。
キーワードは「RoundRect()関数」です。
RoundRect()関数は矩形の座標と角の丸めの大きさを指定するだけで
角の丸い矩形を描画することができます。
塗りつぶしはデバイスコンテキストに関連付けられているブラシを使用します。

実行時の様子

'角の丸い矩形を描画する
Private Declare Function RoundRect Lib "gdi32.dll" _
    (ByVal hdc As Long, ByVal nLeftRect As Long, ByVal nTopRect As Long, _
    ByVal nRightRect As Long, ByVal nBottomRect As Long, _
    ByVal nWidth As Long, ByVal nHeight As Long) As Long
'デバイスコンテキストにオブジェクトを選択する
Private Declare Function SelectObject Lib "gdi32.dll" _
    (ByVal hdc As Long, ByVal hgdiobj As Long) As Long
'グラフィックスオブジェクトを削除し、システムリソースを開放する
Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
'ソリッドカラー(純色)で論理ブラシを作成する
Private Declare Function CreateSolidBrush Lib "gdi32.dll" _
    (ByVal crColor As Long) As Long

Private Sub Form_Load() Me.Picture1.ScaleMode = 3 'ピクセルモード End Sub
Private Sub Picture1_Paint() Dim hbr As Long, hOld As Long With Me.Picture1 .BackColor = vbWhite '背景色 '矩形を描画 .ForeColor = vbRed '枠線の色 hbr = CreateSolidBrush(RGB(240, 255, 140)) '塗りつぶしの色 hOld = SelectObject(.hdc, hbr) Call RoundRect(.hdc, 30, 30, .ScaleWidth - 60, .ScaleHeight - 60, 20, 20) Call SelectObject(.hdc, hOld) Call DeleteObject(hbr) End With End Sub
ダウンロード