tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Shakie
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
2245
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Pat-NRW Pat-NRW ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    Hallo Forum-Gemeinde
    Neu angemeldet und gleich eine Frage weil meine Programmiererfahrung zu lange her ist (VB5Pro & C++ auf Amiga).
    Will jetzt aber wieder einsteigen mit VB 2008 Express da es ja preislich nicht günstiger geht Meine alten Sourcecodes liegen
    leider auf einem alten Zip-Drive und mangels Hardware komm ich da nicht mehr dran. Portieren ging wahrscheinlich eh nicht.
    Zur Zeit probiere ich mit Erfolg alles durch was ich so brauchen werde. Aber eine Sache bereitet mir Kopfschmerzen und unruhige
    Nächte.

    Zielbeispiel:
    Zwei PictureBoxen. Eine soll zb. das Spielfeld (A) sein, eine weiter, unsichtbare Box (B), beinhaltet verschiedene Spielsteine
    die bei Bedarf als Teilausschnitt in das Spielfeld eingefügt werden soll. Hierbei soll auch nur eine Teilbereich überschrieben werden.
    Also ...... einen Stein von (B) z.b. 30x30 Pixel nach (A) bringen ohne das der Rest von (A) überschrieben wird.

    GDI32 ist so weit klar und BitBlt eigentlich auch. Eigentlich deshalb weil ein ergoogelte Beschreibung zwar das gesetzte Ziel erreicht aber
    der Rest von der Box ebenfalls überschrieben bzw. gelöscht wird. Und genau das soll nicht passieren.

    Würde mich freuen wenn Vorschläge oder Tips eingehen ....... sonst bekomme ich noch mehr graue Haare

    LG Pat
     

  2. #2
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Also erstmal würde ich als "Grafikspeicher" keine unsichtbare PictureBox nehmen, sondern eine oder mehrere Bitmaps.
    Zweitens: BitBlt brauchst du nicht. GDI+ ist im .Net-Framework vollständig unterstützt.
    Hier ein Beispielcode, der ein transparentes PNG von der Festplatte ließt (Form-Load-Event), in einer Bitmap zwischenspeichert und einen Ausschnitt davon auf eine "PictureBox1" zeichnet (Paint-Event der PictureBox1):
    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Public Class Form1
        Private bild As Bitmap
     
        Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            Dim Quellbereich As New Rectangle(100, 100, 50, 50) ' Gibt an welche Pixel gezeichnet werden sollen
            Dim Zielbereich As New Rectangle(10, 10, 50, 50) ' Gibt an auf welchen Bereich die Pixel gezeichnet werden sollen. Man beachte, dass die Pixel hierbei auf die größe des Zielbereichs gestreckt werden, falls Quellbereich und Zielbereich nicht gleich groß sind!
            e.Graphics.DrawImage(bild, Zielbereich, Quellbereich, GraphicsUnit.Pixel)
        End Sub
     
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            bild = New Bitmap("C:\MeinBildDasSogarTransparentSeinDarf.png")
        End Sub
    End Class
    Pat-NRW bedankt sich. 
    hihi = -h²

  3. #3
    Pat-NRW Pat-NRW ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    Danke Schakie
    Jetzt muß noch nur noch sehen wie ich es auf meine Bedürfnisse umbasteln kann. Auf jeden Fall geht es erst einmal.

    Das mit den Bitmaps statt Box ging mir Abends auch noch durch den Kopf ..... recht haste
    GDI+ .... wieder schlauer geworden. Wie gesagt ist seeeehr lange her das in VB was gemacht habe.

    LG Pat
     

  4. #4
    Pat-NRW Pat-NRW ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    Mhhhhhh ... so ganz klappt das doch nicht. Will ich per Button die kleine Bitmap mehrfach, je Klick eine mit geänderten XY-Positionen,
    in der Box anzeigen lassen verschwinden die anderen wieder. Da wird also nix zu gefügt. Das einzige was bleibt ist das BackgroundImage.

    Muss ich noch mal drüber schlafen ........

    LG Pat
     

  5. #5
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Die PictureBox hat, im Gegensatz zu VB6 und früher (glaube ich jedenfalls), keinen DoubleBuffer. Das heißt Dinge, die du zeichnest, merkt sich die PictureBox nicht.
    Das Zeichnen solltest du immer im Paint-Event ausführen und du musst das Bild so zeichnen, wie es angezeigt werden soll. Also nicht nur Veränderungen gegenüber dem letzten Button-Click oder Ähnlichem zeichnen.
    Klar?
    Schau dir mal dieses Tutorial an. Ist in C# aber zum Übersetzen nach VB.Net kannst du einfach einen CodeTranslator verwenden.
    Geändert von Shakie (28.01.10 um 23:28 Uhr)
     
    hihi = -h²

  6. #6
    Pat-NRW Pat-NRW ist offline Rookie
    Registriert seit
    Jan 2010
    Beiträge
    6
    Danke Dir Shakie
    Bin jetzt auch so weit ..... aber das ich davon begeistert bin immer wieder den kompletten Aufbau
    per Bitmap zu benutzen wäre gelogen Ich muß mir dazu noch ein paar Gedanken machen.
    Gibt es denn überhaupt keine Möglichkeit wie früher einzelne Grafikelemente dauerhaft in eine
    PictureBox oder auch nur in eine Form oder sonst was einzubinden?

    LG Pat
     

  7. #7
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Zitat Zitat von Pat-NRW Beitrag anzeigen
    aber das ich davon begeistert bin immer wieder den kompletten Aufbau
    per Bitmap zu benutzen wäre gelogen
    Was spricht dagegen?
    Ließ dir das hier mal durch: The accursed PictureBox
    Edit: Falls du den C#-Code nicht nach VB.Net übersetzen kannst, dann verwende einen CodeTranslator.
    Geändert von Shakie (03.02.10 um 15:44 Uhr)
     
    hihi = -h²

Ähnliche Themen

  1. Skript für kopieren und einfügen
    Von maddineytsch im Forum Photoshop
    Antworten: 2
    Letzter Beitrag: 11.06.10, 02:16
  2. mi .bat datei kopieren und einfügen
    Von Joschie im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 14.02.08, 14:53
  3. kopieren & einfügen
    Von Chrizz92 im Forum Microsoft Windows
    Antworten: 6
    Letzter Beitrag: 14.01.07, 20:11
  4. Sonderzeichen Kopieren +Einfügen?
    Von kirchel im Forum Typografie
    Antworten: 2
    Letzter Beitrag: 12.03.04, 10:41
  5. kopieren einfügen in win2000
    Von stillerschrei im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 30.06.02, 20:04