VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 コントロール共通関係のメニュー
1.主要プロパティについて
2.オブジェクトの表示/非表示状態を切り替える
3.コントロールをプログラム実行時に作成する
4.現在アクティブなコントロール及び直前アクティブだったコントロールを取得
5.フォーム上のすべてのコントロールのプロパティ値を一度に設定
6.コントロールを WindowsXP スタイルで表示する
7.円形・多角形のフォーム・コントロール・ピクチャーを作成する
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.


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

     上記実行結果
 controlcommon06_01.gif
このページのトップへ移動します。 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

       上記実行結果
 controlcommon06_02.gif

このページのトップへ移動します。 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

       上記実行結果
 controlcommon06_03.gif
このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
色々な形のコントロールを作成する 星形 丸型 多角形 コントロールを作成 色々の形のフォームを作成




このページのトップへ移動します。