Fill

Tags:    visual-basic

Hej!

Jeg mangler syntaksen for Fill.
Det jeg skal bruge er simpelthen at udfylde et område i en Picturebox med en given farve.
(Ligesom i de fleste tegneprogrammer).Området er selvfølgelig omkranset af en anden farve.

Er der een der har de vise sten for det hører jeg gerne.
På forhånd TAK!!






7 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Hej!

Jeg mangler syntaksen for Fill.
Det jeg skal bruge er simpelthen at udfylde et område i en Picturebox med en given farve.
(Ligesom i de fleste tegneprogrammer).Området er selvfølgelig omkranset af en anden farve.

Er der een der har de vise sten for det hører jeg gerne.
På forhånd TAK!!



JT


for test put en picturebox på en form tegn tegn et lukket område med venstre museknap fyld med højre museknap. det var det.

Option Explicit

Private Declare Function ExtFloodFill Lib "Gdi32" _
(ByVal hdc As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal crColor As Long, _
ByVal wFillType As Long) As Long

'variables used for drawing and filling
Dim X1 As Single
Dim Y1 As Single
Dim bDraw As Boolean


Private Sub Form_Load()

'used to create a random fill colour
Randomize Time

'initialize picturebox
With Picture1
.AutoRedraw = True
.ScaleMode = vbPixels
.FillStyle = vbFSSolid
End With

End Sub


Private Sub Form_Resize()

Picture1.Move 120, 600, Me.ScaleWidth - 240, Me.ScaleHeight - 1300

End Sub


Private Sub Command1_Click()

On Error Resume Next

With CommonDialog1
.CancelError = True
.Flags = cdlOFNExplorer Or cdlOFNFileMustExist Or cdlOFNLongNames
.Filter = "*.bmp|*.bmp"
.ShowOpen

If Len(.FileName) > 0 Then
Picture1.Picture = LoadPicture(.FileName)
End If

End With

load_exit:
Exit Sub

load_error:
Resume load_exit

End Sub


Private Sub Command2_Click()

On Error Resume Next

With CommonDialog1
.CancelError = True
.Flags = cdlOFNExplorer Or cdlOFNFileMustExist Or cdlOFNLongNames
.Filter = "*.bmp|*.bmp"
.ShowSave

If Len(.FileName) > 0 Then
SavePicture Picture1.Image, .FileName
End If

End With

save_exit:
Exit Sub

save_error:
Resume save_exit

End Sub


Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'enable drawing
bDraw = True

'if left mouse button, set up the line drawing
If Button = vbLeftButton Then

X1 = X
Y1 = Y

'if right mouse button, fill
ElseIf Button = vbRightButton Then

Picture1.FillColor = RGB(Int(Rnd * 255), Int(Rnd * 255), Int(Rnd * 255))
ExtFloodFill Picture1.hdc, X, Y, Picture1.Point(X, Y), 1

End If

End Sub


Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'if left mouse button, draw a
'line between the original point
'and the current one, but only
'if drawing is enabled
If bDraw Then
If Button = vbLeftButton Then

Picture1.Line (X1, Y1)-(X, Y)
X1 = X
Y1 = Y

End If

End If

End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

'disable drawing
bDraw = False

End Sub



Hej!

Jeg mangler syntaksen for Fill.
Det jeg skal bruge er simpelthen at udfylde et område i en Picturebox med en given farve.
(Ligesom i de fleste tegneprogrammer).Området er selvfølgelig omkranset af en anden farve.

Er der een der har de vise sten for det hører jeg gerne.
På forhånd TAK!!




Eksempel:
<pre>
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
FillColor = QBColor(Int(Rnd * 15)) ' Vælget tildfældig FillColor.
FillStyle = Int(Rnd * 8) ' Vælger tildfældig FillStyle.
Circle (X, Y), 250 ' Tegner en cirkel.
End Sub
</pre>

Her er vad MSDN siger (Jeg har copy-.pastet kildekoden til hjælpesiden. Åben den i en browse):

<p>
Returns or sets the color used to fill in shapes; <b>FillColor</b> is also used to fill in circles and boxes created with the <b>Circle</b> and <b>Line</b> <object id=alink_4 type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM name="Command" value="ALink">
<PARAM name="DefaultTopic" value="_topic_not_found.htm">
<PARAM name="Item1" value="">
<PARAM name="Item2" value="vbdefgraphicsmethod">
</object><a href=JavaScript:alink_4.Click()>graphics methods</a>.</p>
<p class=label>
<b>Syntax</b></p>
<p>
<i>object</i>.<b>FillColor</b> [ = <i>value</i>]</p>
<p>
The <b>FillColor</b> property syntax has these parts:</p>
<table border=1 cellpadding=5 cols=2 frame=below rules=rows>
<tr valign=top>
<td class=label width=29%><b>Part</b></td>
<td class=label width=71%><b>Description</b></td>
</tr>
<tr valign=top>
<td width=29%><i>Object</i></td>
<td width=71%>An <object id=alink_5 type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM name="Command" value="ALink">
<PARAM name="DefaultTopic" value="_topic_not_found.htm">
<PARAM name="Item1" value="">
<PARAM name="Item2" value="defobjectexpression">
</object><a href=JavaScript:alink_5.Click()>object expression</a> that evaluates to an object in the Applies To list.</td>
</tr>
<tr valign=top>
<td width=29%><i>Value</i></td>
<td width=71%>A value or constant that determines the fill color, as described in Settings.</td>
</tr>
</table><br>
<p class=label>
<b>Settings</b></p>
<p>
The settings for <i>value</i> are:</p>
<table border=1 cellpadding=5 cols=2 frame=below rules=rows>
<tr valign=top>
<td class=label width=29%><b>Setting</b></td>
<td class=label width=71%><b>Description</b></td>
</tr>
<tr valign=top>
<td width=29%>Normal RGB colors</td>
<td width=71%>Colors set with the <b>RGB</b> or <b>QBColor</b> functions in code.</td>
</tr>
<tr valign=top>
<td width=29%>System default colors</td>
<td width=71%>Colors specified with the system color <object id=alink_6 type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM name="Command" value="ALink">
<PARAM name="DefaultTopic" value="_topic_not_found.htm">
<PARAM name="Item1" value="">
<PARAM name="Item2" value="defconstant">
</object><a href=JavaScript:alink_6.Click()>constants</a> in the Visual Basic (VB) object library in the Object Browser. The Microsoft Windows operating environment substitutes the user's choices, as specified by the user's <object id=alink_7 type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM name="Command" value="ALink">
<PARAM name="DefaultTopic" value="_topic_not_found.htm">
<PARAM name="Item1" value="">
<PARAM name="Item2" value="defcontrolpanel">
</object><a href=JavaScript:alink_7.Click()>Control Panel</a> settings.</td>
</tr>
</table><br>
<p>
By default, <b>FillColor</b> is set to 0 (Black).</p>
<p class=label>
<b>Remarks</b></p>
<p>
Except for the <b>Form</b> object, when the <b>FillStyle</b> property is set to its default, 1 (Transparent), the <b>FillColor</b> setting is ignored.</p>







Hvor herre bevars !!!!

Sådan skal det gøres! :

picture1.line(10,10) - (20,20),vbblack,bf

(laver en box på 10x10, 10x10 pixels inde i pictureboxen (fra øverst-venstre)

/Duplex



Private Sub Command1_Click()
CommonDialog1.ShowColor
Picture1.Line (1000, 1000)-(500, 500), CommonDialog1.Color, BF
End Sub


Det må være det her du mener ..........:-)

Alle de lange og KOPIEREDE løsnings-forslag , hvor kommentarerne stadig er på engelsk og afsenderen tydeligvis ikke selv ved hvad det handler om , kan vi ikke bruge til noget ...

Jeg er enig med Duplex : Hvor herre bevars !!!!



[Redigeret d. 13/07-02 13:25:37 af Jesper Mikkelsen]



Hej!

Jeg mangler syntaksen for Fill.
Det jeg skal bruge er simpelthen at udfylde et område i en Picturebox med en given farve.
(Ligesom i de fleste tegneprogrammer).Området er selvfølgelig omkranset af en anden farve.

Er der een der har de vise sten for det hører jeg gerne.
På forhånd TAK!!



JT

Sådan her skal det gøres

Private Sub Command1_Click()
DrawBox Picture1, 100, 0, 1000, 1000,vbBlue
End Sub


private Sub DrawBox(MyObject As Object, Top As Long, Left As Long, Height As Long, Width As Long,Color as long)
Dim i As Integer
For i = Left To Width Step 15
MyObject.ForeColor = Color ' Set color.
MyObject.Line (i, Top)-(i, Top + Height) 'fyld område med Blå farve
Next i


End Sub[Redigeret d. 14/07-02 01:39:14 af Jan Toft]



Hej!

Jeg mangler syntaksen for Fill.
Det jeg skal bruge er simpelthen at udfylde et område i en Picturebox med en given farve.
(Ligesom i de fleste tegneprogrammer).Området er selvfølgelig omkranset af en anden farve.

Er der een der har de vise sten for det hører jeg gerne.
På forhånd TAK!!



JT

[Redigeret d. 14/07-02 01:39:46 af Jan Toft]



t