| |

VB.NET - Fortgeschrittenemehrere Layer zeichnen | |  | Autor: Goblinkiller | Datum: 30.12.10 11:45 |
| Hallo zusammen!
Ich stehe momentan vor einem Problem und komme einfach nicht weiter, hoffe jemand von euch kann mir dabei helfen...
Ich versuche über mehrere BufferedGraphics-Objekte einzelne Ebenen eines Bildes aufzubauen.
Beispiel:
BufferedGraphics bg1 enthält ein grünes Rechteck (fixe Position)
BufferedGraphics bg2 enthält ein rotes Rechteck (beim Mauszeiger)
Nun will ich zuerst bg1 zeichnen, und danach bg2 [u]transparent darüberlegen. Es wird später noch weitere Ebenen geben, aber ich probiere es erstmal mit diesem vereinfachten Beispiel.
Folgendermaßen habe ich mir das vorgestellt:
Public Class Form1
Dim g As Graphics
Dim bgContext As BufferedGraphicsContext
Dim bg1 As BufferedGraphics
Dim bg2 As BufferedGraphics
Dim rect1 As Rectangle
Dim rect2 As Rectangle
Public Sub init()
Me.DoubleBuffered = True
g = Me.Panel1.CreateGraphics
bgContext = BufferedGraphicsManager.Current
bg1 = bgContext.Allocate(g, Me.Panel1.DisplayRectangle)
bg2 = bgContext.Allocate(g, Me.Panel1.DisplayRectangle)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
init()
End Sub
Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
'Buffer 1
bg1.Graphics.Clear(Color.Transparent)
rect1 = New Rectangle(20, 20, 50, 50)
bg1.Graphics.DrawRectangle(Pens.Green, rect1)
bg1.Graphics.FillRectangle(Brushes.Green, rect1)
bg1.Render(g)
'Buffer 2
bg2.Graphics.Clear(Color.Transparent)
rect2 = New Rectangle(e.X, e.Y, 20, 20)
bg2.Graphics.DrawRectangle(Pens.Red, rect2)
bg2.Render(g)
End Sub
End Class Nun ist aber das Problem, dass die Buffer einander überschreiben. Sie werden also nicht transparent übereinander gelegt...
Bei meinen Recherchen bin ich öfter auf Tutorials gestoßen, die mit Win32 API-Funktionen die Buffer zuerst ineinander kopiert haben und erst dann gezeichnet haben - ist das über .net-Funktionen möglich oder hab ich da generell was falsch verstanden?
Danke für eure Antworten und auf jeden Fall schon mal einen guten Rutsch ins neue Jahr!  |  |
 | 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 |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 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
|
|