vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Transparente Bilder 
Autor: GPM
Datum: 17.02.18 15:43

Warum Panels mit Bildern verwenden?
Alles einfach in die PictureBox zeichnen.
Ein einfaches Beispiel mit verschieben und skalieren(Mausrad)
Public Class Form1
    Dim WithEvents Pb As New PictureBox With {.Dock = DockStyle.Fill, .Parent = _
      Me}
    Dim hgrund As Bitmap = SystemIcons.Shield.ToBitmap
    Dim picList As New List(Of MyPicture)
    Dim loc, pos As Point, img As Int32, mov As Boolean
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.ClientSize = New Size(800, 800)
        For y = 200 To 400 Step 100
            picList.Add(New MyPicture(SystemIcons.Warning.ToBitmap, New _
              Rectangle(225, y, 64, 64)))
            picList.Add(New MyPicture(SystemIcons.Error.ToBitmap, New Rectangle( _
            375, y, 64, 64)))
            picList.Add(New MyPicture(Me.Icon.ToBitmap, New Rectangle(525, y, _
            64, 64)))
        Next
    End Sub
 
    Private Sub Pb_MouseDown(sender As Object, e As MouseEventArgs) Handles _
      Pb.MouseDown
        For i = picList.Count - 1 To 0 Step -1
            If picList(i).Bounds.Contains(e.Location) Then
                loc = e.Location
                pos = New Point(picList(i).Bounds.X, picList(i).Bounds.Y)
                picList.Add(picList(i)) 'aktuelles Bild =
                picList.RemoveAt(i)     'Top-Position
                img = picList.Count - 1
                mov = True
                Exit Sub
            End If
        Next
        mov = False
    End Sub
 
    Private Sub Pb_MouseMove(sender As Object, e As MouseEventArgs) Handles _
      Pb.MouseMove
        If mov AndAlso e.Button = MouseButtons.Left Then
            Dim re As Rectangle = picList(img).Bounds
            picList(img) = New MyPicture(picList(img).Img, New Rectangle(pos.X _
              + e.X - loc.X, pos.Y + e.Y - loc.Y, re.Width, re.Height))
            Pb.Invalidate()
        End If
    End Sub
 
    Private Sub Pb_Paint(sender As Object, e As PaintEventArgs) Handles Pb.Paint
        e.Graphics.InterpolationMode = _
          Drawing2D.InterpolationMode.NearestNeighbor
        e.Graphics.Clear(Color.Green)
        e.Graphics.DrawImage(hgrund, 0, 0, Pb.Width, Pb.Height)
        For Each pic In picList
            e.Graphics.DrawImage(pic.Img, pic.Bounds)
        Next
    End Sub
 
    Private Sub Pb_MouseWheel(sender As Object, e As MouseEventArgs) Handles _
      Pb.MouseWheel
        If Not mov Then Return 'kein Bild ausgewählt
        Dim r As Rectangle = picList(img).Bounds
        If e.Delta > 0 Then
            picList(img) = New MyPicture(picList(img).Img, Rectangle.Inflate(r, _
              4, 4))
        Else
            If r.Width <= 20 OrElse r.Height <= 20 Then Exit Sub ' Mindestgrösse!
            picList(img) = New MyPicture(picList(img).Img, Rectangle.Inflate(r, _
              -4, -4))
        End If
        Pb.Invalidate()
    End Sub
 
    Private Sub PB_MouseEnter(sender As Object, e As EventArgs) Handles _
      Pb.MouseEnter
        Pb.Focus() ' Für Pb.MouseWheel nötig!
    End Sub
 
    Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        Pb.Invalidate()
    End Sub
End Class
 
Public Class MyPicture
    Private _img As Bitmap
    Private _bounds As Rectangle
 
    Public Sub New(Img As Bitmap, Rec As Rectangle)
        _img = Img
        _bounds = Rec
    End Sub
 
    Public Property Img As Bitmap
        Get
            Return _img
        End Get
        Set(value As Bitmap)
            _img = Img
        End Set
    End Property
 
    Public Property Bounds As Rectangle
        Get
            Return _bounds
        End Get
        Set(value As Rectangle)
            _bounds = Bounds
        End Set
    End Property
End Class
MfG GPM
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Transparente Bilder1.935dm148515.02.18 09:03
Re: Transparente Bilder1.028Manfred X15.02.18 11:52
Re: Transparente Bilder1.130dm148515.02.18 13:27
Re: Transparente Bilder990Manfred X15.02.18 18:06
Re: Transparente Bilder1.004dm148516.02.18 10:07
Re: Transparente Bilder1.012Manfred X16.02.18 11:53
Re: Transparente Bilder983dm148516.02.18 13:44
Re: Transparente Bilder999Manfred X16.02.18 15:16
Re: Transparente Bilder1.002dm148516.02.18 15:29
Re: Transparente Bilder1.085dm148516.02.18 13:54
Re: Transparente Bilder960dm148516.02.18 14:44
Re: Transparente Bilder982Kuno6016.02.18 22:26
Re: Transparente Bilder952GPM17.02.18 15:43
Re: Transparente Bilder988dm148519.02.18 12:01
Re: Transparente Bilder1.028GPM19.02.18 23:56
Re: Transparente Bilder1.035dm148520.02.18 09:17
Re: Transparente Bilder989GPM20.02.18 11:08
Re: Transparente Bilder1.100dm148520.02.18 11:18
Re: Transparente Bilder983GPM20.02.18 22:26
Re: Transparente Bilder1.059dm148520.02.18 22:55
Re: Transparente Bilder981dm148521.02.18 08:50
Re: Transparente Bilder919GPM21.02.18 14:39
Re: Transparente Bilder888dm148521.02.18 21:18
Re: Transparente Bilder880dm148524.02.18 21:15

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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