角の丸い矩形を描画(T) <TOP>
ピクチャボックスに角の丸い長方形を描画してみます。
RoundRect 角の丸い矩形を描画
GetDC 指定されたウィンドウのデバイスコンテキストを取得
ReleaseDC デバイスコンテキストを解放
CreateSolidBrush 論理ブラシを作成
SelectObject 指定されたデバイスコンテキストのオブジェクトを選択
DeleteObject オブジェクトを削除
例では、ピクチャボックスの中央に角の丸み(半径を)変えながら描画しています。
'================================================================ '= 角の丸い矩形を描画 '= (RoundRect.bas) '================================================================ #include "Windows.bi" ' 角の丸い矩形を描画 Declare Function Api_RoundRect& Lib "gdi32" Alias "RoundRect" (ByVal hDC&, ByVal nLeftRect&, ByVal nTopRect&, ByVal nRightRect&, ByVal nBottomRect&, ByVal nWidth&, ByVal nHeight&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) ' ソリッドカラーで論理ブラシを作成 Declare Function Api_CreateSolidBrush& Lib "gdi32" Alias "CreateSolidBrush" (ByVal crColor&) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' ペン、ブラシ、フォント、ビットマップ、リージョン、パレットのいずれかの論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放。オブジェクトを削除した後は、指定されたハンドルは無効になる Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) Var Shared Picture1 As Object
Picture1.Attach GetDlgItem("Picture1")
'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
Var hDC As Long
Var Radius As Integer
Var hNewBrush As Long
Var hOldBrush As Long
Var Ret As Long
hDC = Api_GetDC(Picture1.GethWnd)
Picture1.SetBackColor RGB(255, 128, 64)
hNewBrush = Api_CreateSolidBrush(RGB(64, 128, 255))
Ret = Api_SelectObject(hDC, hNewBrush)
For radius = 0 To 100 Step 5
Picture1.cls
Ret = Api_RoundRect(hDC, 10, 10, Picture1.GetWidth - 10 , Picture1.GetHeight - 10, Radius, Radius)
Wait 30
Next
Ret = Api_SelectObject(hDC, hOldBrush)
Ret = Api_DeleteObject(nNewBrush)
Ret = Api_ReleaseDC(Picture1.GethWnd, hDC)
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End