Grafische Elemente zeichnen auf unendliche Zeichenfläche

  • VB.NET

Es gibt 49 Antworten in diesem Thema. Der letzte Beitrag () ist von FlyingEagle.

    Klingt ehrlich gesagt nicht allzu kompliziert. Ich würde es (für einen Prototypen) so machen:

    Damit hat man Karten, Hover usw. kommt ins Control und beliebig viele Connections (find ich flexibler als 1:1). Bis auf Text, ... fehlt nix, das hab ich aber für den Moment aus Faulheit einfach mal raus gelassen ;)
    na da bin ich ja mal gespannt :)

    ne idee warum das nicht zum gewünschten ergebniss führt?

    VB.NET-Quellcode

    1. ...

    während das hier geht (g = graphics)

    VB.NET-Quellcode

    1. ...


    Juhuh, der Graphicspath geht schon mal ... zwar noch nicht an der richtigen stelle, aber immerhin ...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FlyingEagle“ ()

    Also, ich habe dein Control mal Quick'n'Dirty nachprogrammiert (in C# weil ich das lieber hab, ließe sich aber ohne weiteres übersetzen). Das Control rendert die Karten zwar nicht so wie bei dir und auch nur mit geraden Linien (weil ich halt faul bin), hat aber trotztem Hover, das Ziehen von Verbindungen, ... Bei der im ersten angehängten Screenshot gezeigten Situation rendert das Control 20 Karten und 7 Verbindungen in 2,3 Millisekunden (~400fps). Beim zweiten Screenshot rendert das Control 250 Karten und 75 Verbindungen in 15 Millisekunden (~60fps). Selbst bei 1000 Karten und 300 Verbindungen hat man noch bedienbare 16fps. Flackern gibt es übrigens nicht.
    Außerdem habe ich noch einen Trick eingebaut: Verwendet man ihn, werden Karten nur dann neu gezeichnet, wenn sich auch wirklich etwas geändert hat. Das bedeutet dann natürlich, dass das Control die Karten nur ganz selten ändern muss, wodurch es auch bei mehreren Tausend Karten benutzbar bleibt. Die Karte mit Hover etc. wird natürlich trotztem gezeichnet. So kriegt man konstante Drawingzeiten von unter einer Millisekunde, solange man nichts an den Karten ändert. Dann wird alles gezeichnet und die Drawingzeit geht wieder runter.
    Im Anhang ist noch das Projekt. Kannst dir gerne anschauen und schauen, was ich genau anders gemacht habe. Du kannst auch gerne den Code in einen Konverter schmeißen und bei dir verwenden.

    Grüße Stefan
    Bilder
    • Simple Cards.png

      19,88 kB, 600×400, 111 mal angesehen
    • Simple Cards Stresstest.png

      34,6 kB, 600×400, 115 mal angesehen
    Dateien
    ich werde es mir zu gemüte führen! [mein vs2010 sagt mir was von inkompatibel]
    schön das ich nicht der einzige irre bin, der die nacht durchproggt :)

    ich bin in der main.paint-methode bei etwa 1-4ms das müssten dann so um die 1000-250 fps sein, je nachdem wie schnell man mit der maus ist und was man noch so an elementen "überfährt".

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FlyingEagle“ ()