| |
VB.NET - Ein- und UmsteigerRe: Bildbereiche als Button nutzen | | | Autor: Oly | Datum: 24.09.13 23:09 |
| Super, damit komme ich weiter,
vielen Dank!!!
gruß | |
Bildbereiche als Button nutzen | | | Autor: Oly | Datum: 21.09.13 23:20 |
| Halo zusammen,
wie kann ich von einem Bild (eingebettet in einer Picturebox) Bildbereiche als Button nutzen? Wie erstellt man so etwas?
Als Beispiel, die Erde als Bild in der Box. Klickt man auf Afrika so erscheint die Form Afrike, Europa die Form Europa usw.
Wie ist so etwas machbar?
Gruß | |
Re: Bildbereiche als Button nutzen | | | Autor: Manfred X | Datum: 21.09.13 23:50 |
| Hallo!
Das hängt von der Gestaltung Deines Bildes ab.
Unterscheiden sich die Farben, in der die Kontinente
dargestellt sind, ermittelst Du im MouseDown-Eventhandler
die Position des Clicks im Bild (EventArgs->Location) und
anhand der Farbe des Bild-Pixels an dieser Stelle
(z.B. per GetPixel-Methode der Bitmap, die das Bild enthält)
kann der angeclickte Erdteil zugeordnet werden.
| |
Re: Bildbereiche als Button nutzen | | | Autor: Oly | Datum: 22.09.13 00:40 |
| Hallo Manfred,
momentan ist es noch ein schwarz weiss Bild und es wird in mehrere Rechtecke aufgeteilt werden. So sollte es sein. Die einzelnenBereiche wollte ich farblich unterteilen. Dann würde e s ja mit getpixel funktionieren sofern ich keine schwarze Trennungslinie treffe. Kann man auch einen RechteckbBereich markieren ohne die Farbe abzufragen? | |
Re: Bildbereiche als Button nutzen | | | Autor: GPM | Datum: 22.09.13 10:20 |
| Ja, Du kannst Bereiche festlegen und diese mit .Contains(Mauspositon) testen.
Public Class Form1
Dim WithEvents Pb As New PictureBox With {.Dock = DockStyle.Fill, _
.BackColor = Color.Black, .Parent = Me}
Dim rlist As New List(Of Rectangle)({New Rectangle(10, 10, 100, 100), New _
Rectangle(20, 120, 100, 100), New Rectangle(130, 50, 100, 100)})
Dim nr As Int32 = -1
Private Sub Pb_MouseDown(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Pb.MouseDown
For i As Int32 = 0 To rlist.Count - 1
If rlist(i).Contains(e.Location) Then
nr = i
Pb.Invalidate()
End If
Next
End Sub
Private Sub Pb_Paint(sender As Object, e As _
System.Windows.Forms.PaintEventArgs) Handles Pb.Paint
For i As Int32 = 0 To rlist.Count - 1
If nr = i Then
e.Graphics.FillRectangle(Brushes.Yellow, rlist(i))
Else
e.Graphics.FillRectangle(Brushes.White, rlist(i))
End If
Next
End Sub
End Class MfG GPM 0 | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|