Bilder auf den Schirm zaubern?

Gast #1122263
Ich erinnere mich, dass ich von ca. 15 Jahren mal in Pascal unter DOS 
eine Uhr oder so in der Schule programmieren sollte, mit irgendwelchen 
Funktionen wie put_pixel() oder draw_line(). Das war tierisch langsam 
und ruckelig und ich war erstaunt wie ein Klassenkamerad ein vollständig 
animiertes Linienfahrrad hinbekommen hat.

Viele im Internet verbreitete technische Spielereien (led-matrix-touch) 
etc. haben zur Visualisierung gleich 3D Darstellungen mit OpenGL oder 
so.

Von der Software zum Bild ist es wohl ein weiter Weg über X Sub-Systeme.

Ich interessiere mich dafür, weil ich eine LED Matrix simulieren möchte 
aber nicht weiss, wie man sowas anstellen könnte. Ich weiss, dass 
GUI-Toolkits auch Grafikfunktionen für canvas-Elemente bereithalten, 
aber ob sowas schnell ist?

Ideal wär' eine Quelle die den Weg eines Bildes auf den Bildschirm 
erklärt und Tipps zum Programmieren gibt. Ist wohl der Inhalt von 
Büchern!?
Gast
Hi

Welche Sprache/Programmierumgebung willst/musst/kannst du denn benutzen?
Wenn du mit Pascal Erfahrungen hast würde sich Delphi anbieten. Ist 
allerdings objectorientiert (ähnlich Turbo Vision bei Turbo Pascal).
Turbo Delphi gibt es kostenlos.

>Das war tierisch langsam und ruckelig...

Die Rechner sind in den letzten 15 jahren etwas schneller geworden.

>Ich weiss, dass GUI-Toolkits auch Grafikfunktionen für canvas-Elemente 
>bereithalten, aber ob sowas schnell ist?

Für deine Zwecke mit grosser Wahrscheinlichkeit schnell genug.

MfG Spess
Gast
Hallo,

die Sprache ist mir fast egal - mit Python kann ich mich anfreunden weil 
es recht komfortabel ist. Aber eigentlich suche ich allgemeine 
Informationen, wie ich den Bildschirm unter meine Kontrolle bekomme.. 
:-)
Gast
Den bildschirm gibt's eh nicht, aber ein window ist kein Problem. Eine 
Websprache wuerde ich allerdings nicht empfehlen, ausser du willst im 
Browser laufenlassen.
(Firma: Q3)
Unabhängig von der Programmiersprache, die Technik, die ruck- und 
flimmerfreie Grafiken auf den Bildschirm bringt, heisst "back plane 
drawing" bzw. "double buffering".

Das gibts mit Hardware-Unterstützung oder auch nur per Software. Der 
Trick ist, dass man in einen Bildspeicher (Hardware) oder einen 
Bildpuffer (Software) schreibt, der gerade nicht zu sehen ist.

Es gibt Grafikkarten, die haben so viel Speicher, dass mindestens zwei 
komplette Screens darin Platz haben. Während der eine Screen gerade 
angezeigt wird, wird in den anderen (gerade unsichtbaren) gezeichnet und 
dann per Hardware-Register getauscht - möglichst synchron zum 
Vertikalimpuls.

Das ganze geht bei schnellen Rechnern auch nur per Software, was 
einfacher ist, weil man in höheren Programmierspreachen ohnehin keinen 
Zugriff auf die Speicherbänke der Grafikkarte hat. Man legt intern ein 
Image-Objekt an und zeichnet dort hinein. Danach wird es per copy- oder 
imagedraw-Befehl (abhänig von Sprache) in den Context eines sichtbaren 
Canvas kopiert. Manche Programmiersprachen bzw. deren Compiler 
syncronisieren sowas von selber mit dem Vertikalimpuls (z.B. RealBasic).

Frank

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.