vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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

Visual-Basic Einsteiger
Performance (Grafik) erhöhen 
Autor: Grisu786
Datum: 20.12.05 19:17

Ich programmiere derzeit einen karten-Editor für ein Online-Browsergame. Funktioniert mittlerweile auch alles reibungslos, lediglich mit der Performance habe ich ein Problem.

Sobald die Karte refreshed werden muss (User plaziert neue Textur auf der Karte oder scrollt die Karte) geht die Performance in den Keller, und man darf 5-10 Sekunden warten bis die Karte in der PictureBox neu aufgebaut ist.

Hat jemand eine Idee wie ich die Performance da erhöhen kann?

Folgenden Code benutze ich zum Anzeigen der Karte:

Private Sub kartenaufbau()
 
    stausMap.Caption = "Aktuelle Kartengröße: " & felderx & " x " & feldery & "" & _
      "Felder"
    If felderx = 0 And feldery = 0 Then Exit Sub
    If Not scroll Then
        ' Für längere Vorgänge
        MsgBar Me, "Karte wird aktualisiert.", True
    Else
        scroll = False
        MsgBar Me, "Karte scrollt und wird neu aufgebaut.", True
    End If
 
    posX = 295 + (295 / 100 * Abs(zoomz))
    posY = -330 - (-90 / 100 * Abs(zoomz))
    countX = 59 - (59 / 100 * Abs(zoomz))
    countY = 30 - (30 / 100 * Abs(zoomz))
    abstandx1 = 118
    abstandxx1 = abstandx1 - (abstandx1 / 100 * Abs(zoomz))
    zoomx1 = zoomx - (zoomx / 100 * Abs(zoomz))
    zoomy1 = zoomy - (zoomy / 100 * Abs(zoomz))
    Display.Cls
    Set oStream = oFSO.OpenTextFile(App.Path & "\mapper.con", ForReading)
    gfxpfad = oStream.ReadLine
    oStream.Close
        For tabd = 1 To 19
            For tabe = 1 To 19
                indexGfx = mapDisp(tabe, tabd).Ind
                posxx = posX + (countX * tabe) - (countX * tabd)
                posyy = posY + (countY * tabe) + (countY * tabd)
                If posxx >= -59 And posxx <= 708 And posyy >= -90 And _
                  posyy <= 600 Then
                    If indexGfx = 0 Then
                        pic1 = LoadPicture(App.Path & "\" & "msk_test.gif")
                        Display.PaintPicture wiesem.Picture, posxx, posyy, _
                          zoomx1, zoomy1, , , , , vbMergePaint
                        Display.PaintPicture pic1.Picture, posxx, posyy, _
                        zoomx1, zoomy1, , , , , vbSrcAnd
                    Else
                        If Tabelle.RecordCount > 0 And Not Tabelle.BOF Then _
                          Tabelle.MoveFirst
                        gfxZahl = Tabelle.RecordCount
                        Tabelle.Index = "IndexA"
                        Tabelle.Seek "=", indexGfx
                        If Not Tabelle.NoMatch Then
                            pic1 = LoadPicture(gfxpfad & "\terrain\" & Tabelle( _
                              "Pfad"))
                            Display.PaintPicture wiesem.Picture, posxx, posyy, _
                            zoomx1, zoomy1, , , , , vbMergePaint
                            Display.PaintPicture pic1.Picture, posxx, posyy, _
                            zoomx1, zoomy1, , , , , vbSrcAnd
                        Else
                            'kein Datensatz vorhanden
                            MsgBox "Die Grafik mit dem Index (" & indexGfx & ")" & _
                              "existiert nicht in der Datenbank", vbCritical, _
                              "Fehler"
                            Tabelle.Close
                            Db.Close
                            Set Tabelle = Nothing
                            Set Db = Nothing
                            End
                        End If
                    End If
                End If
            Next tabe
        Next tabd
    'raster darstellen
    If raster = True Then
        rasx1 = 766
        rasx2 = 884
        rasx3 = 59
        rasy1 = 0
        rasy2 = 30
        ras3 = 765 / abstandxx1 * 4
        For rasterX = 1 To ras3
            Display.Line (rasx1, 0)-(766, rasy1)
            Display.Line (0, rasy2)-(rasx3, 0)
            rasx1 = rasx1 - abstandxx1
            rasx2 = rasx2 - abstandxx1
            rasy1 = rasy1 + 60 - (60 / 100 * Abs(zoomz))
            rasy2 = rasy2 + 60 - (60 / 100 * Abs(zoomz))
            rasx3 = rasx3 + abstandxx1
        Next rasterX
    End If
    MsgBar Me, ""
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Performance (Grafik) erhöhen788Grisu78620.12.05 19:17
Re: Performance (Grafik) erhöhen434OldMan20.12.05 19:23
Re: Performance (Grafik) erhöhen403Grisu78620.12.05 19:30
Re: Performance (Grafik) erhöhen410OldMan20.12.05 19:55
Re: *seeeeeeeeeufz* 515Grisu78622.12.05 01:12
Re: *seeeeeeeeeufz* 419Zardoz22.12.05 02:09
Re: *seeeeeeeeeufz* 429Desatrous22.12.05 08:38
Re: *seeeeeeeeeufz* 426Grisu78622.12.05 11:39
Re: *seeeeeeeeeufz* 425Desatrous22.12.05 12:06
Re: *seeeeeeeeeufz* 429Grisu78622.12.05 16:41
Re: Performance (Grafik) erhöhen454RapID23o522.12.05 14:16
Re: Performance (Grafik) erhöhen399Grisu78622.12.05 16:43
Re: Performance (Grafik) erhöhen459Zardoz22.12.05 20:20
Re: Performance (Grafik) erhöhen411Grisu78622.12.05 20:40
Re: Performance (Grafik) erhöhen446Zardoz23.12.05 20:03
Re: Performance (Grafik) erhöhen403Grisu78626.12.05 01:12

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