vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Bitmap ohne Flackern bewegen 
Autor: Logo
Datum: 22.02.10 18:32

Hallo,

da man mir das letzte Mal hier ganz fantastisch geholfen hat, traue ich mich (VB.NET-mäßig immer noch ziemlich grün hinter den Ohren), noch einmal um Hilfe zu bitten.

Im Rahmen eines therapeutischen Spiels für junge Kinder gibt es ein kleines Belohnungsspiel, in welchem eine mit den Pfeiltasten gesteuerte Biene versucht, mit nach oben gereckten Stachel möglichst viele der von oben ins Bild schwebenden Luftballone zum Platzen zu bringen. Ich hatte diese kleine Spiel vor Jahren schon in VB6 programmiert und für alles Sich-Bewegende Imageboxen genommen, weil die ja volle Transparenz boten, auch dann, wenn sich 2 davon kreuzten. In VB.Net lässt sich das (das Web ist ja voll davon) leider nicht so ohne weiteres übertragen, aber nach etlichen Stunden Suchens habe ich herausgefunden, dass man diese Transparenz prima hinbekommt, wenn man die mit den Microsoft Power Packs 3.0 erhältlichen Shape-Controls benutzt und die gewünschten GIFs dort als BackgroundImage einlädt. Hierbei ist zu beachten, dass sich alle diese Shapes im gleichen ShapeContainer befinden.

So weit, so gut, d. h. in ganz vielen Fällen ist das eine prima Lösung, wenn sich Bitmaps überlappen sollen; und ich konnte das alte Programm dann schnell nachbauen. Aber nun taucht mein eigentliches Problem auf: Im Gegensatz zu VB6 flackert das Ganze enorm, und blöderweise haben die Shape-Controls kein DoubleBuffer-Member.

Ich habe daher im Web gesucht und auch eine Möglichkeit gefunden, Bitmaps mit BackBuffering (über Tasten oder Timer gesteuert) ruckelfrei über den Bildschirm zu bewegen. Alles klappt: Das Image hat die richtige Größe und bewegt sich an die richtige Stelle.

Allerdings bleiben die jeweils zuvor gezeichneten Images jedesmal bestehen, so dass das jeweilige Bild einen richtigen Schweif bekommt. Ich bin einfach zu dusselig, um das wegzubekommen. Hier mal das was ich (auf der Basis meinerr Suchergebnisse) habe (die Original-Kommentare des Autors lasse ich mal drin):

Public Sub Backbuffering(ByVal bmpImage As Bitmap, ByVal rect As Rectangle)
 
 
        Dim BackBuffer As New Bitmap(bmpImage)
        Dim DrawingArea As Graphics = Graphics.FromImage(BackBuffer)
 
        Dim Printable As Graphics = Me.CreateGraphics()
        Dim Viewable As Graphics = Me.CreateGraphics()
 
        ' Next, you want to draw to your graphics object as normal, 
        ' so DrawingArea.Clear(Color.Black) and such.
 
        'DrawingArea.Clear(Color.Navy)
 
        Printable.DrawImage(bmpImage, rect)
 
        ' Once you've completed drawing the object that you want to 
        ' smoothly move, simply draw the pre-rendered bitmap over the top 
        ' of the Graphics object you want to update:
 
        Viewable.DrawImage(BackBuffer, rect)
 
    End Sub
Über rect wird immer die neue Position bzw. die Größe der zu bewegenden Bitmap übergeben, das funktioniert gut.

Irgendwo fehlt wohl das von mir auskommentierte DrawingArea.Clear, aber an welcher Stelle ich das auch aktiviere: Mein schönes Image ist verschollen...

Wo ist bitte mein Denkfehler?

Für Eure Hilfe im Voraus ganz herzlichen Dank !!!

Logo
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bitmap ohne Flackern bewegen5.056Logo22.02.10 18:32
Re: Bitmap ohne Flackern bewegen3.062Jonny13223.02.10 08:25
Re: Bitmap ohne Flackern bewegen2.719Logo23.02.10 09:02
Re: Bitmap ohne Flackern bewegen2.743jvbsl23.02.10 11:48
Re: Bitmap ohne Flackern bewegen2.702Logo23.02.10 13:22
Re: Bitmap ohne Flackern bewegen2.781Jonny13223.02.10 09:12
Re: Bitmap ohne Flackern bewegen2.632Logo23.02.10 09:19
Re: Bitmap ohne Flackern bewegen2.749Logo23.02.10 13:24

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-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