Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Viel Grafik in Fenster - Geschwindigkeitsproblem

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
E-P-S



Anmeldungsdatum: 16.09.2004
Beiträge: 500
Wohnort: Neuruppin

BeitragVerfasst am: 23.06.2010, 23:16    Titel: Viel Grafik in Fenster - Geschwindigkeitsproblem Antworten mit Zitat

Hi zusammen. Ein etwas komisch formulierter Thread Titel - ich bitte um Verzeihung.

Ich plane mal wieder ein PlugIn für trueSpace, welches ich wieder in FB entwickle. Diesmal soll es ein F-Curve Editor oder auch Graph Editor werden (wer schonmal ein 3D Programm benutzt hat, dem sagt es mit Sicherheit etwas).



Jedenfalls wird ziemlich viel Grafik benötigt, also Linien, Raster, Flächen etc.

Logischerweise muß ich die selbst zeichnen (WM_PAINT) - soweit so klar. Jedoch mache ich mir schon im Vorfeld Gedanken ob das ganze überhaupt schnell genug funktionieren kann.

Hintergrund: Beim letzen PlugIn musste ich den Hintergrund "von Hand" darstellen und schon das alleine hat im Vollbild merklich zu flimmern geführt. Ok, Vollbild heißt bei mir Full HD, dennoch frage ich mich ob die Windows API Funktionen hier die einzige Methode sind.

Kurzum: Sind die Windows API Zeichen-Funktionen die einzigen um etwas auf ein Fenster zu zeichnen oder wie würdet ihr sowas angehen?

Vielen Dank schonmal
_________________
Man kann sich öfter als zweimal im Leben halb tot lachen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dkl
FreeBASIC-Compiler-Entwickler


Anmeldungsdatum: 25.04.2010
Beiträge: 14
Wohnort: Germany

BeitragVerfasst am: 25.06.2010, 20:09    Titel: Antworten mit Zitat

Hallo,

Double-buffering kannst du selbst machen, mit einem Memory DC, einer Bitmap und BitBlt(), in etwa so:

Code:
dim as HDC mem_dc = CreateCompatibleDC(window_dc)
dim as HBITMAP mem_bmp = CreateCompatibleBitmap(window_dc, width, height)
SelectObject(mem_dc, mem_bmp)

...
case WM_ERASEBKGND
    return 1
case WM_PAINT
    ... paint into mem_dc ...
    dim as HDC paint_dc = BeginPaint(...)
    BitBlt(paint_dc, 0, 0, width, height, mem_dc, 0, 0, SRCCOPY)
    EndPaint()


Das ist soweit ich weiß eine ziemlich gängige Methode; wird z.B. im Scintilla Editor benutzt.

EDIT: z.B. FillRect() mit brushes ist natürlich nicht so super schnell. Besser ist da schon der ExtTextOut Trick zum Hintergrund-Füllen ohne Text:
Code:
ExtTextOut(hdc, 0, 0, ETO_OPAQUE, @rect, NULL, 0, NULL)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz