Code Pimpen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Breadsoft.

    Hallo, ich hab mal eine Frage undzwar hab ich diesen Code:

    VB.NET-Quellcode

    1. Private Function GetKarte(ByVal Pos As Point) As Image
    2. Dim img As Image = Nothing
    3. Dim minw, minh As Integer
    4. Select Case kartensize
    5. Case Is = KartenGr.Groß
    6. img = My.Resources.KartenDecks
    7. minw = 146
    8. minh = 196
    9. Case Is = KartenGr.Klein
    10. img = My.Resources.KartenDecks_klein
    11. minw = 146 / 2
    12. minh = 196 / 2
    13. End Select
    14. Dim cur As New Bitmap(minw - 4, minh - 4)
    15. Dim g As Graphics = Graphics.FromImage(cur)
    16. g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy
    17. g.DrawImage(img, New Rectangle(0, 0, cur.Width, cur.Height), _
    18. New Rectangle(minw * Pos.X + 2, minh * Pos.Y + 2, cur.Width, cur.Height), GraphicsUnit.Pixel)
    19. g.Flush()
    20. Return cur
    21. End Function


    er bewerktstelligt das ausschneiden von den einzelnen Spielkarten aus meinem Image, somit hab ich nur eine Bilddatei in den Ressourcen die alle 52 Karten enthält.
    Das Problem ist allerdings, dass ich logischerweiße diesen code 52 mal in einer Schleife durchlaufe um alle Kartenbilder zu bekommen diese werden in einem Array gespeichert.
    Das dauert nunmal seine Zeit ca. 30 sec.
    Habt ihr vielleicht eine idee wie ich das schneller hinbekomme? :)

    LG Lightbull
    schneide es nicht jedesmal aus, sondern zeichne direkt, so wie du ausschneidest, eben mit dem source Rectangle...
    Oder, du machst das nur einmal und speicherst die Bilder dann auch in einem Array, dann haste trotzdem intern nur eine Datei...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Lightbull schrieb:

    Das Problem ist allerdings, dass ich logischerweiße diesen code 52 mal in einer Schleife durchlaufe um alle Kartenbilder zu bekommen diese werden in einem Array gespeichert.

    mach die Methode so, dass sie nicht ein Image zurückgibt, sondern ein Array mit Images. Dann muß die Resource nur einmal geladen werden.

    Aber an annerer Stelle sind da noch mehr Würmer drin in deim Proggi. Weil Auch so wies ist darf das nicht jeweils 500ms dauern.
    Vielen dank für die Tipps, nein 30 sec. war ein bisschen übertrieben!
    ich hab jetzt die Bilddatteien in der klasse beim erstellen in eine variable geladen, es lag wirklich daren weil die Bilddatei ca 2000x2000 pixel groß ist und die 52 mal hintereinander zu laden hat dann doch gedauert.
    Nochmal Danke :)