掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Win2000でのCreatePolygonRgn (ID:80576)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
リージョンの作成から描画の部分が間違っていると思いますが・・・ 尚、このままだと、リソース食いつぶしてしまいますが・・・ 以下のコードを参考に・・・ Option Explicit Private Const ALTERNATE = 1 Private Const WHITE_BRUSH = 0 Private Type POINTAPI X As Long Y As Long End Type Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long Private Declare Function FillRgn Lib "gdi32" (ByVal hDC As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long Private Sub Command1_Click() Me.Hide Unload Me End Sub Private Sub Test() ' 星の描画 Const POINT_NUM As Long = 5 Const PI As Single = 3.14159 Dim p(POINT_NUM - 1) As POINTAPI Dim hRgn As Long Dim I As Long '星型リージョン作成用データ初期化 For I = 0 To POINT_NUM - 1 p(I).X = 100 * Cos(2 * PI * I * 2 / POINT_NUM) + 100 p(I).Y = 100 * Sin(2 * PI * I * 2 / POINT_NUM) + 100 Next 'リージョンの作成 hRgn = CreatePolygonRgn(p(0), POINT_NUM, ALTERNATE) 'リージョンの描画 FillRgn Picture1.hDC, hRgn, GetStockObject(WHITE_BRUSH) 'リージョンの破棄 DeleteObject hRgn End Sub Private Sub Test2() Dim hRgn As Long Dim BtnPoint(3) As POINTAPI BtnPoint(0).X = 26 BtnPoint(0).Y = 7 BtnPoint(1).X = 101 BtnPoint(1).Y = 7 BtnPoint(2).X = 89 BtnPoint(2).Y = 71 BtnPoint(3).X = 13 BtnPoint(3).Y = 71 'リージョンの作成 hRgn = CreatePolygonRgn(BtnPoint(0), 4, 1) 'リージョンの描画 FillRgn Picture1.hDC, hRgn, GetStockObject(WHITE_BRUSH) 'リージョンの破棄 DeleteObject hRgn End Sub Private Sub Picture1_Paint() 'Call Test Call Test2 End Sub 以上。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.