最近VBを使い始めたので初心者みたいな質問ですいませんが、ちょっと困ってます。
ピクチャアボックスにラインで三角形を書き、中を塗りつぶしたいんですけど、どうすればよいのでしょうか??
丸や四角は「BF」指定で出来たのですが・・・
N88のころの「PAINT」みたいな命令あるのでしょうか?
よろしくお願いします。

A 回答 (2件)

Visial Basicの中では昔、探して見ましたが良くわかりませんでした。


API関数でよければ以下に記述しますので参考にして下さい.

------------------------------------------------------------
FORM1にCOMMANDBOXを作成し、以下のデータを入力する。
ちょっと長いのでコピー・ペーストで!!

Option Explicit

Private Sub Command1_Click()
#If Win32 Then
Dim dc&, di&
Dim oldpen&, oldbrush&
#Else
Dim dc%, di%
Dim oldpen%, oldbrush%
#End If

'dc = Picture1.hDC
'Picture1.Cls
dc = Form1.hDC

'ペンとブラシを削除する
If hndPen Then di = DeleteObject(hndPen)
If hndBrush Then di = DeleteObject(hndBrush)

' 新しいペンを作成します。
'hndPen = CreatePen(0, 1, QBColor(5))
hndPen = CreatePen(0, 1, RGB(100, 200, 30))

' 新しいブラシを作成する。
'hndBrush = CreateSolidBrush(QBColor(5))
hndBrush = CreateSolidBrush(RGB(50, 100, 30))

'多角形の頂点を指定する
PointArray(0).x = 116: PointArray(0).Y = 51
PointArray(1).x = 80: PointArray(1).Y = 106
PointArray(2).x = 185: PointArray(2).Y = 107
PointArray(3).x = 500: PointArray(3).Y = 200
PointArray(4).x = 300: PointArray(4).Y = 280

'ペン・ブラシを変更する(戻り値が今までのペン・ブラシの情報)
oldpen = SelectObject(dc, hndPen)
oldbrush = SelectObject(dc, hndBrush)

Form1.Cls
'三角形を作成する
di = Polygon(dc, PointArray(0), 3)
MsgBox ""
Form1.Cls
'五角形を作成する
di = Polygon(dc, PointArray(0), 5)

'ペン・ブラシを元に戻す
If (oldpen <> 0) Then di = SelectObject(dc, oldpen)
If (oldbrush <> 0) Then di = SelectObject(dc, oldbrush)
End Sub

-------------------------------------------------------------
MODULE1(標準モジュール)を作成し以下を貼り付ける

Option Explicit
'指定したデバイスコンテキストまたは情報コンテキストを削除する
Declare Function DeleteObject% Lib "GDI" (ByVal hObject%)
'2つ以上の点をつなげた多角形を描く
Declare Function Polygon& Lib "gdi32" (ByVal hDC As Long, lpPoint As POINTAPI, ByVal nCount As Long)
'ペン・ブラシの色・スタイルを変更する
Declare Function SelectObject& Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long)
'指定されたスタイル、幅、色を持つペンを作成する
Declare Function CreatePen& Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long)
'同じ色で塗りつぶすブラシを作成する
Declare Function CreateSolidBrush& Lib "gdi32" (ByVal crColor As Long)

' 使用するプライベートペンおよびブラシ
#If Win32 Then
Public hndPen&
Public hndBrush&
#Else
Public hndPen%
Public hndBrush%

#End If
Type POINTAPI
x As Long
Y As Long
End Type

Public PointArray(4) As POINTAPI '多角形の点-1(どのくらいまでできるのか良くわからない)
-----------------------------------------------------------------
三角形と五角形を描くプログラムです
    • good
    • 0

簡単な方法だと3点の座標がわかればできますよ!


座標をそれぞれ(a,b),(c,d),(e,f)とします。
後は、3点にLINEを引いて塗るだけ!
line(a,b)-(c,d)
line(c,d)-(e,f)
line(e,f)-(a,b)
塗る座標は三角形の中であればどこでも良いです。
paint(a,b)
塗り方は、もっと簡単な方法があったと思いますが、
すいません忘れました(笑)
    • good
    • 0
この回答へのお礼

早速の回答すいませんでした。
が、知りたかったのは「PictureBox」のメソッドで「Line」はあるのですが「Paint」が無いみたいなので
どうしたら良いかが知りたかったので・・・
質問の書き方が悪くてすいませんでした。

お礼日時:2000/12/18 16:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報