| |
VB.NET - Ein- und UmsteigerKreis in Picturebox blinken lassen | | | Autor: 00tommy | Datum: 13.02.17 18:53 |
| Hallo,
ich lasse mir in eine Picturebox einen Kreis zeichnen:
Public Class Form1
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim g As Graphics = e.Graphics
g.FillEllipse(Brushes.Black, New Rectangle(10, 10, 100, 100))
End Sub
End Class Wie kann ich den Kreis blinken lassen ?
Es sollen noch mehr Kreise werden. Die ich alle gleich erzeugen möchte.
Gibt es eine Möglichkeit, alle mit dem gleichen Timer, blinken zu lassen ?
Tschö | |
Re: Kreis in Picturebox blinken lassen | | | Autor: Manfred X | Datum: 13.02.17 20:36 |
| Hallo!
Vielleicht so was?
Invalidieren kann man übrigens auch Teilflächen einer Zeichenebene.
Public Class frmBlink
Dim WithEvents picturebox1 As New PictureBox With _
{.Parent = Me, .Width = 300, .Height = 300}
Dim WithEvents tim As New Timer With _
{.Interval = 1000, .Enabled = True}
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles picturebox1.Paint
Dim g As Graphics = e.Graphics
Static isvisible As Boolean = False
If isvisible Then
g.FillEllipse(Brushes.Black, New Rectangle(10, 10, 100, 100))
End If
isvisible = Not isvisible
End Sub
Private Sub tim_Tick(sender As Object, _
e As System.EventArgs) Handles tim.Tick
picturebox1.Invalidate()
End Sub
End Class | |
Re: Kreis in Picturebox blinken lassen | | | Autor: 00tommy | Datum: 14.02.17 21:06 |
| Hallo,
ich würde gerne die sub
Private Sub Listview1_SelectedIndexChanged(sender As Object, e As EventArgs) _
Handles Listview1.SelectedIndexChanged blinken lassen.
Leider funktioniert
Private Sub tim_Tick(sender As Object, _
e As System.EventArgs) Handles tim.Tick
Listview1_SelectedIndexChanged.Invalidate()
End Sub hat noch jemand einen Tipp ? | |
Re: Kreis in Picturebox blinken lassen | | | Autor: Manfred X | Datum: 14.02.17 21:53 |
| Hallo!
Wenn Du ein Listview-Item selektierst, wird es automatisch
mit den Selection-Colors des Systems eingefärbt.
Wie das aussieht ist u.a. abhängig von der FullRowSelect-Eigenschaft.
Du kannst aber die OwnerDraw-Eigenschaft nutzen und die Items selbst
zeichnen (incl. Farbgebung und Blink-Invalidierung des
Draw(Sub)Item-Eventhandlers).
Welche(s) Item(s) genau soll(en) unter welchen Bedingungen blinken?
(Ist das nicht irritierend? Blinken signalisiert gewöhnlich ein Problem
oder das Ende einer längeren Bearbeitung). | |
Re: Kreis in Picturebox blinken lassen | | | Autor: 00tommy | Datum: 19.02.17 20:32 |
| Hallo Manfred,
es geht mir nicht um die selektierte Auswahl die blinken soll.
Von der Listview hole ich mir die Koordinaten für die Zeichnung die blinken soll.
Alles was blinken soll liegt in der Private Sub zeichnen()
die funktioniert, und macht was sie machen soll, eben nur nicht blinken. ;(
Mit
Private Sub lv_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
lv.SelectedIndexChanged
zeichnen()
End Sub Rufe ich die neuen Koordinaten für den nächsten kreis auf.
Ich weis jetzt nur noch nicht, wie ich den Ticker aufrufen (einbinden) soll. | |
Re: Kreis in Picturebox blinken lassen | | | Autor: Manfred X | Datum: 19.02.17 22:56 |
| So ganz ist mir nicht klar, was Du erreichen möchtest.
Schau Dir dieses Beispiel-Formular an ....
Public Class frmBlink
Dim WithEvents pb As New PictureBox With _
{.Parent = Me, .Size = New Size(300, 300)}
Dim WithEvents lbo As New ListBox With _
{.Parent = Me, .Top = 330, .Width = 300, .Height = 60}
Dim WithEvents tim As New Timer With _
{.Interval = 300, .Enabled = True}
Dim swap As Boolean
Private Sub frmBlink_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(320, 440)
'Die Listenindices definieren die Position
'der Kreise in der Picturebox pb
lbo.Items.AddRange _
({"100,100", "130, 130", "160, 160", "100, 160"})
End Sub
Private Sub tim_Tick(sender As Object, _
e As System.EventArgs) Handles tim.Tick
swap = Not swap 'Blinkgeber
pb.Invalidate() 'Zeichnung anfordern
End Sub
Private Sub pb_Paint(sender As Object, _
e As System.Windows.Forms.PaintEventArgs) Handles pb.Paint
Dim vl() As String, x%, y%
'Nicht-selektierte Kreise zeichnen (grau)
Using br As New SolidBrush(Color.Gray)
For i As Integer = 0 To lbo.Items.Count - 1
If Not i = lbo.SelectedIndex Then
vl = lbo.Items(i).ToString.Split(","c)
x = CInt(vl(0)) : y = CInt(vl(1))
e.Graphics.FillEllipse(br, x, y, 20, 20)
End If
Next i
End Using
If lbo.SelectedIndex > -1 Then
Dim col As Color
'aktuell benötigte Blinkfarbe
If swap Then col = Color.Red Else col = Color.White
Using br As New SolidBrush(col)
'Selektierten Kreis blinken lassen
vl = lbo.Items(lbo.SelectedIndex).ToString.Split(","c)
x = CInt(vl(0)) : y = CInt(vl(1))
e.Graphics.FillEllipse(br, x, y, 20, 20)
End Using
End If
End Sub
End Class | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|