Gute Grafische Methoden neben Doublebuffering

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Dragonfly.

    Gute Grafische Methoden neben Doublebuffering

    Hallo ich verwende zur Aktivierung bestimmter Mausereignisse im Hintergrund transparente Picboxen.
    In meinem Frame habe ich daher über Eigenschaften Doublebuffering aktiviert. Was sich auch sehr bezahlt macht.
    Kleine Grafische Ruckler bleiben allerdings trotzdem nicht aus...
    Meine Frage ist folgende: Welche Grafische Methoden gibt es noch darüber hinaus, ich könnte es natürlich mit ActiveX / DirectX usw. versuchen aber das scheint mir bei einer einfachen Anwendung ein bisschen krass zu sein (oder liege ich da falsch?)

    Ich bedanke mich schon mal im Vorfeld für alle Antworten, es wird helfen die Augenprobleme vieler Nutzer zu reduzieren :D
    Viellecht solltest du versuchen, wenn es ruckelt die komplette exe zu optimieren und auch andere Funktionen, Timer etc. verkleinern oder die Intervalle herunterstellen! Andererseits auch versuchen so wenig rechenoptionen wie möglich auszuführen und/oder der exe mehr Speicher zuweisen!
    Danke für die Antwort.
    o Timer wird in diesem Programm nicht verwendet
    o Rechenoperation habe ich nicht mehr als nötig
    o Exe mehr Speicher zuweisen, das ist eine ziemlich gute Idee, ich werde mich da mal schlau machen :thumbsup:
    so viel ich weiß hatten wir das Thema schonmal. müsstest dich also nur der Sufu bedienen! Dabei ist herausgekommen, das man unter Vista auch nur einem Programm max 1Gig geben kann. Jedoch, müsste man nicht mehr CPU für das programm reservieren? Oder viellecht versuchen bei einem dual prozessor oder mehr, die rechenoptionen auf mehrere Kerne zu verteilen!
    Ok, ich bin ein bisschen weitergekommen.
    Ich habe durch Zufall festgestellt das der Grafikfehler bei den Picboxen nur dann auftritt wenn diese neu angeordnet werden. Werden sie einfach nur sichtbar bzw. unsichtbar gemacht tritt der Fehler nicht auf.

    Die Lösung wäre jetzt ein Raster aus Picboxen, welche sich je nach Programmstelle anpassen und einen bestimmten Wert für die Bedienung zugewiesen bekommen. Da ich aber bei meinem Programm nicht mehr am Anfang stehe und so eine komplette Umsortierung mich um Tage zurückwerfen würde. Suche ich jetzt erstmal nach anderen Möglichkeiten.
    Ich werde mal versuchen das mit der Zuweisung von mehr Prozessorleistung so hinzubekommen.

    Ich habe mal eben mein Programm laufen lassen und dazu parallel die Systemleistung beobachtet.
    Also mein PC hat folgende Leistungsmerkmale:
    2 x 2,8GHZ CPU (dual)
    1,87GB RAM

    Ohne Programm:
    CPU-Auslastung = 4%
    RAM-Auslastung = 762MB

    Mit Programm:
    CPU-Auslastung = 35%
    RAM-Auslastung = 762MB

    Die CPU-Auslastung scheint mir für die Neuanordnung von etwa 10 transparenten Picboxen im zeitlichen Abstand von 1 Sekunde zu hoch zu sein. Die restlichen grafischen Dinge und Rechenoperationen im Programm sind wirklich nicht von Gewicht. Die Picboxen haben jeweils eine Größe von 50x100 Pixel.
    Bin mal gespannt auf eure Einschätzung, ich spiele immer noch mit der Hoffnung mir die Neuanordnung der Picboxen zu ersparen :)
    Ich habe mal eben sämtliche Elemente neben der Anordnung der Picboxen ausgeschaltet, die Systemauslastung ist gleich hoch. Die Checkboxelemente werden übrigens auch mit leichten Grafikfehlern angeordnet.
    Noch etwas zu den Grafikfehlern, diese Fehler bestehen darin dass die ganze Neuanordnung nicht flüssig ist.
    Die Checkboxen sind zum Beispiel nicht zeitlich sofort da sobald das Menü geöffnet wurde, sondern ordnen sich zeitlich so versetzt an das man diese Anordnung gerade noch mitbeobachten kann (das Programm wirkt dadurch irgendwie, ok lassen wir das...) Die restlichen grafischen Objekte (Farbe, Linien, Schrift) keine Probleme.
    Ich werde jetzt das ganze Programm mal nehmen und auf einen anderen Rechner laufen lassen, da ist doch irgendwo der Wurm drin...
    Bei einer meiner Anwendunge hatte ich auch das Problem! Warum brauchst du denn die Picture Boxen? Wenn du vielleicht nur was zeichnen möchtest, verwende doch mal das Paint ereigniss der Form! Ist auch egal, wenn da mehr code drinnensteht, was besser ist als in 10 PictureBoxen 10 mal ein paint ereigniss!
    Ne, ne, was ich ohne Picboxen zeichnen kann zeichne ich auch ohne Picboxen. :D
    Ich benötige die Picboxen um Mausereignisse auszulösen. Wenn du in den Bereich der Picbox clickst öffnet sich ein Unterverzeichnis, wo dann weitere Picboxen angeordnet werden usw.

    Ich habe eben das ganze auf einem anderen Rechner laufen lassen, etwa halb so viel Leistung wie mein PC.
    Darstellungsprobleme waren etwa doppelt so stark...

    Die Probleme treten eben nur dann auf wenn die Picboxen oder allgemein Objekte (Bei Checkboxen ist es ja nicht anders) neu angeordnet werden. Ein schlichte Veränderung der Sichtbarkeit bringt keinen Effekt mit sich.
    Die Boxen werden nicht direkt verschoben sondern jedes Mal neu angeordnet.

    VB.NET-Quellcode

    1. PBX01.Location = New Point(LocationX, Y1 + 20)
    2. PBX01.Size = New Point(sizeY, sizeX)
    3. PBX01.BackColor = Color.Transparent
    4. Controls.Add(PBX01)
    Du meinst das ich im Prinzip nur die Location verändere und die Picbox dauerhaft auf dem Bildschirm bleibt.
    Macht Sinn das sind ja dann auch viel weniger Rechenbefehle, das könnte ich in der Tat einmal ausprobieren :thumbsup:

    Ich habe ansonsten festgestellt das die transparente Darstellungen der Picboxen den Speicher frisst und zu Darstellungsproblemen führt. Das Problem ist das ich immer wieder über die Picboxen im Hintergrund drüber zeichnen muss. Wenn ich die Picboxen beispielsweise der Hintergrundfarbe anpasse drängen sie sich in den Vordergrund.
    Obwohl die Zeichnungen zeitlich erst nach der Anordnung der Boxen erfolgen.
    Unsichtbar kann ich die Picboxen ja auch nicht machen, dann kann ich sie ja nicht mehr anklicken, was für das Mausereignis notwendig ist...
    Der Grafikfehler bei den Checkboxen tritt übrigens nur dann auf wenn gleichzeitig sehr viele Picboxen geladen werden.
    Liegt also nicht an den Checkboxen.

    Ich will es einfach machen, wenn jemand eine Lösung hat wie man die Picboxen dazu bringen kann das sie sich sich (trotz farbigen Hintergrundes) nicht ständig nach vorne vor meine gezeichneten Sachen drängen, dann her damit :D :D :D
    Dokumentstruktur ? Das heißt ich würde mit entsprechenden Befehlen dafür sorgen das meine gezeichneten Sachen nicht als Hintergrund gewertet werden die dann entsprechend hinter den Picboxen stehen sondern als Vordergrund ?

    Ich habe das Programm jetzt entsprechend korrigiert, die Picboxen werden am Anfang einmal fest angeordnet und zunächst unsichtbar gemacht. Je nach Befehl werden dann die benötigen Picboxen sichtbar gemacht und mit Location nur neu angeordnet. Es sind in der Tat deutlich weniger Grafikfehler. Das beste Ergebnis wird aber immer noch dann erzeugt wenn auch auf die Neuanordnung verzichtet wird und stattdessen einfach nur sichtbar bzw. unsichtbar gemacht wird.
    Ich werde jetzt das ganze in diese Richtung umbauen. :D :D :D
    Ansicht->Weitere Fenster->Dokumentgliederung

    Da findest du die Reihenfolge der Der Gliederung der einzelnen Elemente. Elemente die Weiter oben angezeigt werden, sind in den Ebenen darüber derer der, die unter den oben liegenden Elemente liegen!

    (Geiler Satz)
    Vielen Dank, das Problem ist nur folgendes in meinem Programm werden alle Picboxen, Checkboxen, Grafiken,
    eigendlich alles, erst während der Programmlaufzeit angeordnet. Das heißt sie tauchen in dieser Übersicht noch nicht auf.

    Ich müsste in meinem Fall wirklich nur die Hintergrundfarbe der Picboxen auf weiß ändern und dann eben mit graphbmp
    meine Bitmap drüberzeichnen. Ich werde jetzt mal weiter googeln, ich kann mir wirklich nicht vorstellen das seitwas nicht möglich sein sollte. :D :D :D
    Das ist in der Tat ein interessanter Befehl, vielen Dank. :D
    Ich werde mal versuchen ob sich damit etwas schrauben lässt. :D

    Lies sich leider nicht auf mein Problem anwenden, aber ich werde mir den Befehl auf jeden Fall merken.

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