-

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Musst du mit einer Schleife durchgehen.
    Sofern die PictureBoxen alle gleich heißen kannst du diesen Code hier nehmen:

    VB.NET-Quellcode

    1. Dim PicBoxNumbers As Integer() = {1, 2, 3}
    2. For Each c As Control In Me.Controls
    3. For Each n As Integer In PicBoxNumbers
    4. If TypeOf c Is PictureBox AndAlso c.Name = "PictureBox" & n Then c.Location = New Point(0, 0)
    5. Next
    6. Next

    Daigel-Programming schrieb:

    Danke erstmal!

    Aber:

    Ich will eigentlich das erreichen:

    Eine Form mit 20 Pictureboxen. Die Namen: Picturebox1 bis Picturebox20.
    In den ersten 10 Pictureboxen sollen nur bestimmte Bilder kommen, in den anderen auch bestimmte Bilder. Die Bilder werden per Zufall ausgewählt. Das hab ich schon. Aber ich weis nicht wie ich die PicBoxen jetzt zusammenfassen kann.

    Versteh ich gerade nicht.

    Beschreib das mal etwas konkreter.

    Was meinst du mit die ersten 10 sollen nur bestimmte Bilder bekommen und die anderen auch bestimmte Bilder?
    also meinst du die bilder zu einem bild machen

    edit
    also noch nicht getestet aber das würde so gehen:

    VB.NET-Quellcode

    1. Dim bmp As New Bitmap(800, 600)
    2. Using g As Graphics = Graphics.FromImage(bmp)
    3. For Each c As Object In Me.Controls
    4. If c.GetType.ToString = "System.Windows.Forms.PictureBox" Then
    5. g.DrawImage(c.Image, c.Location)
    6. End If
    7. Next
    8. Me.BackgroundImage = bmp
    9. bmp.Dispose()
    10. End Using

    somit wird eine bitmap von der größe 800x600 erzeugt, und an die positionen an denen die pcboxen sitzen werden die bilder der Picboxen gesetzt

    Warfley schrieb:

    VB.NET-Quellcode

    1. Dim bmp As New Bitmap(800, 600)
    2. Using g As Graphics = Graphics.FromImage(bmp)
    3. For Each c As Object In Me.Controls If c.GetType.ToString = "System.Windows.Forms.PictureBox" Then
    4. g.DrawImage(c.Image, c.Location)
    5. End If
    6. Next
    7. Me.BackgroundImage = bmp
    8. bmp.Dispose()
    9. End Using
    Nicht dein Ernst oder?


    VB.NET-Quellcode

    1. Private Sub DrawTogether()
    2. Dim bmp As New Bitmap(800, 600)
    3. Using g As Graphics = Graphics.FromImage(bmp)
    4. For Each c As Control In Me.Controls
    5. If TypeOf c Is PictureBox Then g.DrawImage(c.BackgroundImage, c.Location)
    6. Next
    7. Me.BackgroundImage = bmp
    8. bmp.Dispose()
    9. End Using
    10. End Sub
    und wo ist da jetzt der unterschied außer dass du es in eine methode gepackt hast?
    ach ja für gewöhnlich verwenden picboxen images und nicht backgroundimage(sonst könnte man ja auch panels, groupboxen etc verwenden)
    also

    VB.NET-Quellcode

    1. Private Sub DrawTogether()
    2. Dim bmp As New Bitmap(800, 600)
    3. Using g As Graphics = Graphics.FromImage(bmp)
    4. For Each c As Control In Me.Controls
    5. If TypeOf c Is PictureBox Then g.DrawImage(c.Image, c.Location)
    6. Next
    7. Me.BackgroundImage = bmp
    8. bmp.Dispose()
    9. End Using
    10. End Sub
    sowas sollte man überhaupt nicht mit 20 controls machen.
    Man sollte sich eine Canvas - "Zeichenfläche" machen, und ZeichenObjekte - selbstgeschriebene Klassen, die (in diesem Fall) eine bitmap halten, und wissen wie sie sich zeichnen sollen. Davon 20 Stück.

    Controls sind "teure" Ressourcen.

    ein entfernt ähnliches beispiel findest du Control mit beweglicher Figur

    das ist zwar nur 1 Figur statt vieler, und graphisch gezeichnet statt bitmap, aber so das prinzip