7.円形・多角形のフォーム・コントロール・ピクチャーを作成する |
1.円形のフォーム・コントロールを作成する 2.円形の Picture を表示する 3.多角形(星型)のフォーム及びコントロールを表示する 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.円形のフォーム・コントロールを作成する |
Option Explicit 'SampleNo:026 2002.04.27 '指定の領域をウィンドウ領域として設定する(P335) Private Declare Function SetWindowRgn Lib "user32" _ (ByVal hWnd As Long, ByVal hRgn As Long, _ ByVal bRedraw As Boolean) As Long '円形・楕円形の領域を作成する(P321) 'X1=左上隅のX座標 Y1=同Y座標 X2=右下隅のX座標 Y2=同Y座標 Private Declare Function CreateEllipticRgn Lib "gdi32" _ (ByVal X1 As Long, ByVal Y1 As Long, _ ByVal X2 As Long, ByVal Y2 As Long) As Long 'グラフィックオブジェクトを削除しシステムリソースを解放する(P261) Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long Private Sub Form_Load() Dim MaruSet As Long Dim Result As Long Form1.Move 700, 200, 4400, 5000 Command1.Move 750, 1125, 1000, 1000 Command2.Move 2325, 1125, 1000, 1000 Command3.Move 1455, 3225, 1215, 315 Command4.Move 1875, 1935, 390, 915 '丸い領域を作る()内の数値を変えると楕円や円の大きさが変わります MaruSet = CreateEllipticRgn(20, 50, 270, 300) Result = SetWindowRgn(Me.hWnd, MaruSet, True) 'Command1 を円形に(左眼) MaruSet = CreateEllipticRgn(10, 10, 60, 60) Result = SetWindowRgn(Command1.hWnd, MaruSet, 1) 'Command2 を円形に(右目) MaruSet = CreateEllipticRgn(10, 10, 60, 60) Result = SetWindowRgn(Command2.hWnd, MaruSet, 1) 'オブジェクトを削除しシステムリソースを解放する Result = DeleteObject(MaruSet) End Sub Private Sub Command1_Click() '左眼をクリックすると Unload Me End Sub Private Sub Command2_Click() '右目をクリックすると Form3.Show End Sub Private Sub Command3_Click() '口をクリックすると Form2.Show End Sub 上記実行結果 |
2.円形の Picture を表示する |
Option Explicit 'SampleNo:026 2002.04.27 '指定の領域をウィンドウ領域として設定する(P335) Private Declare Function SetWindowRgn Lib "user32" _ (ByVal hWnd As Long, ByVal hRgn As Long, _ ByVal bRedraw As Boolean) As Long '円形・楕円形の領域を作成する(P321) 'X1=左上隅のX座標 Y1=同Y座標 X2=右下隅のX座標 Y2=同Y座標 Private Declare Function CreateEllipticRgn Lib "gdi32" _ (ByVal X1 As Long, ByVal Y1 As Long, _ ByVal X2 As Long, ByVal Y2 As Long) As Long 'グラフィックオブジェクトを削除しシステムリソースを解放する(P261) Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long Private Sub Form_Load() Me.Move 700, 200, 4600, 4500 Picture1.Move 135, 45, 3800, 3800 Set Picture1.Picture = LoadPicture("..\Image.jpg") '別途PictureBoxには画像等を表示しておいて下さい。 Dim MaruSet As Long Dim Result As Long ' 丸い領域を作る()内の数値を変えると楕円や円の大きさが変わります MaruSet = CreateEllipticRgn(20, 20, 250, 250) Result = SetWindowRgn(Picture1.hWnd, MaruSet, True) 'オブジェクトを削除しシステムリソースを解放する Result = DeleteObject(MaruSet) End Sub Private Sub Picture1_Click() Unload Me End Sub 上記実行結果 |
3.多角形(星型)のフォーム及びコントロールを表示する |
Option Explicit 'SampleNo:026 2002.04.27 '指定の領域をウィンドウ領域として設定する(P335) Private Declare Function SetWindowRgn Lib "user32" _ (ByVal hWnd As Long, ByVal hRgn As Long, _ ByVal bRedraw As Boolean) As Long '円形・楕円形の領域を作成する(P321) 'X1=左上隅のX座標 Y1=同Y座標 X2=右下隅のX座標 Y2=同Y座標 Private Declare Function CreateEllipticRgn Lib "gdi32" _ (ByVal X1 As Long, ByVal Y1 As Long, _ ByVal X2 As Long, ByVal Y2 As Long) As Long '多角形の領域を作成する(P322) Private Declare Function CreatePolygonRgn Lib "gdi32" _ (lpPoint As POINTAPI, ByVal nCount As Long, _ ByVal nPolyFillMode As Long) As Long 'グラフィックオブジェクトを削除しシステムリソースを解放する(P261) Private Declare Function DeleteObject Lib "gdi32" _ (ByVal hObject As Long) As Long Private Type POINTAPI X As Long '多角形の頂点のx座標 Y As Long ' 同 y座標 End Type Private Const WINDING = 2 '全域塗りつぶしモード Private Sub Form_Load() Dim hRgn As Long Dim lppt(4) As POINTAPI Dim nCount As Long Dim Result As Long Me.Move 5000, 0, 6100, 5000 Command1.Move 150, 105, 4215, 5640 'Command1.Style =1 'プロパティで設定して下さい Command1.BackColor = vbRed nCount = 5 '多角形の頂点の数 '星形の頂点の座標 lppt(0).X = 180: lppt(0).Y = 100 lppt(1).X = 80: lppt(1).Y = 270 lppt(2).X = 300: lppt(2).Y = 150 lppt(3).X = 60: lppt(3).Y = 150 lppt(4).X = 270: lppt(4).Y = 270 '関数を実行して領域のハンドルを取得 hRgn = CreatePolygonRgn(lppt(0), nCount, WINDING) 'ウィンドウ領域として設定する Result = SetWindowRgn(Me.hWnd, hRgn, True) 'オブジェクトを削除しシステムリソースを解放する Result = DeleteObject(hRgn) End Sub Private Sub Command1_Click() Unload Me End Sub 上記実行結果 |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
色々な形のコントロールを作成する 星形 丸型 多角形 コントロールを作成 色々の形のフォームを作成 |