1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
2139
2139
EMPFEHLEN
-
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
-
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
hihi = -h²
-
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
-
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
-
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²
-
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
-
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
-
Skript für kopieren und einfügen
Von maddineytsch im Forum PhotoshopAntworten: 2Letzter Beitrag: 11.06.10, 02:16 -
mi .bat datei kopieren und einfügen
Von Joschie im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 14.02.08, 14:53 -
kopieren & einfügen
Von Chrizz92 im Forum Microsoft WindowsAntworten: 6Letzter Beitrag: 14.01.07, 20:11 -
Sonderzeichen Kopieren +Einfügen?
Von kirchel im Forum TypografieAntworten: 2Letzter Beitrag: 12.03.04, 10:41 -
kopieren einfügen in win2000
Von stillerschrei im Forum Microsoft WindowsAntworten: 3Letzter Beitrag: 30.06.02, 20:04





Zitieren
Login




