Gast
#5064415
Kennt jemand ein einfaches Beispiel dazu?
|
Anzeige
|
Linux C Beispiel: Punkt auf Bildschirm zeichnen?
Gast
#5064415
Kennt jemand ein einfaches Beispiel dazu?
Gast
#5064418
SW? Da ist die große Frage: was meinst Du mit Linux? Im einfachsten Fall:
Dann ist ein Punkt in Deiner Konsole. Aber Du willst wahrscheinlich Pixel malen, oder? Dann ist die Frage: Ein embedded Linux mit einem Framebuffer oder doch mit einem Windowmanager (aka Xorg oder Wayland/Weston) oder...
Gast
#5064424
Martin H. schrieb: > Im einfachsten Fall:printf("."); Du kennst seine verwendete Programmiersprache? Wo hast du deine Glaskugel gekauft, so eine will ich auch :-)
Gast
#5064426
Mist vergiss es, in der Überschrift steht es ja groß, sorry. Ohne C wäre es halt: echo . Wenn mal vom (Noch-)Standard ausgeht, könnte man hier https://en.wikipedia.org/wiki/Xlib anfangen zu lesen und sich dann hier https://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken#C was aussuchen.
Gast
#5064439
>Im einfachsten Fall: >printf("."); Ich hätte gerne ein Beispiel in C. Der Punkt soll farbig sein und an jede beliebige Stelle des Bildschirms innerhalb eines Fenster gezeichnet werden.
Gast
#5064443
Ich habe ein Beispiel gefunden: http://slist.lilotux.net/linux/xlib/color-drawing.c http://slist.lilotux.net/linux/xlib/color-drawing.c Es zeichnet etwas mehr als einen Punkt. Es hat allerdings ein Problem: Von etwas 10 Startversuchen bleibt das Fenster bei gefühlten 9 Versuchen leer. Woran könnte das liegen?
Gast
#5064445
compilieren mit: gcc -o toolkit1 toolkit1.c -L/usr/X11R6/lib -lX11
Gast
#5064446
Welche Farbe soll es denn sein (Rot, Grün, ...)? Meinst Du mit Fenster die Konsole bzw. ein Terminal oder eine richtige GUI-Anwendung?
Gast
#5064448
egal
Gast
#5064460
Marin H. schrieb >Wenn mal vom (Noch-)Standard ausgeht, könnte man hier >https://en.wikipedia.org/wiki/Xlib anfangen zu lesen und sich dann hier Danke. Ich will nicht lesen. Ich will ein Beispiel C-File und das passende Kommando zum compilieren damit ich das ganze innerhalb von 3 Minuten testen kann.
Gast
#5064461
Ich denke wir sollten den Thread hier abbrechen. Markus schrieb: > Danke. > Ich will nicht lesen. > Ich will ein Beispiel C-File Das sind die besten Voraussetzungen etwas neues zu erlernen. ggg
Gast
#5064468
Also in der einer Konsole geht es am schnellsten mit Escapesequenzen.
Beispiel um Cursor an Stelle X,Y platzieren:
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
Farbig kannst Du es so machen:
https://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c
SDL ist einfach zu erlernen und erlaubt z.B.
Gast
#5064491
StarLord schrieb: > Ich denke wir sollten den Thread hier abbrechen. Wenn ein Problem nicht zu lösen ist, sollte man es auf jemand anderen abwälzen. @Markus: Vergiss Linux, damit geht das nicht. Und die ganzen Linux-Fanbois hier wollen das nur nicht wahrhaben und erzählen Müll. Nimm Windows und stell deine Frage bei support.microsoft.de, da werden Sie geholfen. R. M. schrieb: > DrawPixel(screen,x,y,r,g,b); Das ist doch genau was der TO wollte, ein C Beispiel um einen Punkt(Pixel) auf den Bildschirm zu 'zeichnen'. Warum die negative Beurteilung ?
Gast
#5064519
Autor: HDA (Gast)
schrieb:
> ..
Danke für die Antwort.
Es entspricht aber nicht ganz meinen Anforderungen: >Ich hätte gerne ein Beispiel in C. Der Punkt soll farbig sein und an >jede beliebige Stelle des Bildschirms innerhalb eines Fenster gezeichnet >werden.
Gast
#5064523
Markus schrieb: > Es entspricht aber nicht ganz meinen Anforderungen: >>Ich hätte gerne ein Beispiel in C. Der Punkt soll farbig sein und an >>jede beliebige Stelle des Bildschirms innerhalb eines Fenster gezeichnet >>werden. Dann sende uns bitte ein vollständiges Lastenheft zu.
Gast
#5064524
>R. M. schrieb: >> DrawPixel(screen,x,y,r,g,b); >Das ist doch genau was der TO wollte, Nicht ganz: >Ich will ein Beispiel C-File und das passende Kommando zum compilieren >damit ich das ganze innerhalb von 3 Minuten testen kann.
Gast
#5064531
StarLord schrieb
>Dann sende uns bitte ein vollständiges Lastenheft zu.
Bitteschön:
1. Ich hätte gerne ein Beispiel in C. Der Punkt soll farbig sein und an
jede beliebige Stelle des Bildschirms innerhalb eines Fenster gezeichnet
werden.
2. Ich will ein Beispiel C-File und das passende Kommando zum
compilieren
damit ich das ganze innerhalb von 3 Minuten testen kann.
Gast
#5064544
Markus schrieb: > StarLord schrieb >>Dann sende uns bitte ein vollständiges Lastenheft zu. > > Bitteschön: > 1. Ich hätte gerne ein Beispiel in C. Der Punkt soll farbig sein und an > jede beliebige Stelle des Bildschirms innerhalb eines Fenster gezeichnet > werden. > 2. Ich will ein Beispiel C-File und das passende Kommando zum > compilieren > damit ich das ganze innerhalb von 3 Minuten testen kann. Welches Linux? Wie groß soll der Punkt sein? Welche Entwicklungsumgebung? Soll es in exakt 3 Minuten zu testen sein oder geht es auch schneller? Wie soll das Fenster aussehen? Konsole? GUI Container? Welche Hardware ist vorhanden? Welcher Compiler? Wie dürfen die Ressourcen ausgeschöpft werden? Soll der Punkt an einer festen Stelle bleiben oder vielleicht sogar mit einem Cursor bewegt werden? Welche Farben möchtest du alle haben? ... Ach und wenn wir hier gerade dabei sind Wünsche zu äußern, dann will ich nen Ferrari und ne Frau mit dicken Hupen.
Gast
#5064547
Du willst... Mal im Ernst...die Leute wollen dir hier helfen und du kommst nicht mit infos rüber...kurz eine suchmaschine zu verwenden ist wohl auch zu viel... Aber zu deiner frage...unter linux nutzt man dazu blibliotheken. Es ist auch ein unterschied ob du im vollbildmodus etwas zeichen willst oder in einem fenster deines window-managers...und ab da wird es kompliziert da es unter linux mehr als einen gibt. Das einfachste wäre QT zu verwenden und sich da ein tutorial durchzulesen. Da hier bibliotheken gelinkt werden müssen und wiederrum von deinem linux abhängen solltest du bei deinem jetzigen Kenntnisstand eine vollintegrierte IDE für QT verwenden (findest du auf deren Webseite). Letztendlich klickst du dann auf einen "play button" und dein fenster wird geöffnet.
Gast
#5064567
Auf der Seite http://www.bo8h.de kannst du ein Emulationsprogramm für einen 8-bit-Computer herunterladen, welches Grafik enthält. Das Compilieren ist in der Datei Emul im Verzeichnis info beschrieben. Du müsstest das Programm für deine Zwecke allerdings gewaltig zusammenstreichen. Aber du kannst es als Ausgangspunkt verwenden.
Gast
#5064588
Markus schrieb: > Es entspricht aber nicht ganz meinen Anforderungen: Den Beispielcode, wie man Zeichen auf der Konsole einfärbt, findest Du unter meinem geposteten Link.
Gast
#5064654
Ich will zum Mond fliegen. Zu den Kenntnissen des TO ist auch nix bekannt. Schade um die Manpower die hier verblasen wird. Und ich mach mir noch die Mühe deinen Sch...zu lesen. So ein Mist. Markus schrieb: > Es hat allerdings ein Problem: Von etwas 10 Startversuchen bleibt das > Fenster bei gefühlten 9 Versuchen leer. Woran könnte das liegen? Weil der Ersteller des Programms die Eigenschaften von X auch nur halb kapiert hat. Das Problem/der Vorteil ist, dass X ziemlich asynchron ist. Insbesondere das Auftauchen des Fensters kann durch den Fenstermanager ziemlich verzögert sein, sodass das Zeichnen in ein noch nicht vorhandenes Fenster geht. Ohne Redraw-Event bleibts dann leer. Das hat der Autor zwar durch das wahllose Verstreuen von XFlush bzw. XSync versucht zu kompensieren, aber XFLush ist völlig überflüssig und XSync hilft gerade beim Fenstermanager nix. Bau mal um das XMapWindow herum folgendes ein:
Markus schrieb: > Marin H. schrieb >>Wenn mal vom (Noch-)Standard ausgeht, könnte man hier >>https://en.wikipedia.org/wiki/Xlib anfangen zu lesen und sich dann hier > > Danke. > Ich will nicht lesen. > Ich will ein Beispiel C-File und das passende Kommando zum compilieren > damit ich das ganze innerhalb von 3 Minuten testen kann. Tja, wenn Du das denn mal gemacht hättest. Hinter dem Link "versteckt" sich nämlich genau das - ein Beispiel-C-File mit dem passenden Kommando zum kompilieren. Im Gegensatz zu Deinem selbst gefundenen Beispiel kümmert sich dieses auch um Events und ist zudem deutlich kleiner... R. M. schrieb: > SDL ist einfach zu erlernen und erlaubt z.B. > DrawPixel(screen,x,y,r,g,b); Und hättest du nach SDL geg**gelt, dann wärst du sicher auf diesen Link gestoßen: https://www.libsdl.org/ Auch hier gibt es jede Menge Beispielcode. Aber du bist nicht nur zum lesen zu faul, sondern auch zum Suchen. Aber das machen sicher immer andere für dich.
Gast
#5064811
StarLord schrieb: > Ach und wenn wir hier gerade dabei sind Wünsche zu äußern, dann will ich > nen Ferrari und ne Frau mit dicken Hupen. Du bist ja voll 80er ;-)
Gast
#5065529
Autor: Georg A. (georga) schrieb >Bau mal um das XMapWindow herum folgendes ein: Danke Georg, das war die Lösung :-) Jetzt funktioniert das Demo. Ich habe es mal angehängt. Hier passende die Kommandozeile: > gcc -o punkt punkt.c -L/usr/X11R6/lib -lX11 > ./punkt Danke auch den Leuten, die passende Links gepostet haben. Ansonsten: Es erstaunt mich immer wieder, wie groß die Klappe einiger und wie gering die Kompetenzen dieser Leute sind. Erstaunlich auch, wie schwer es den Leuten fällt, einfach auf den "Punkt" zu kommen. Und dann die Lehrer Typen: >Das sind die besten Voraussetzungen etwas neues zu erlernen. ggg graußig. Markus schrieb: > Jetzt funktioniert das Demo. Wobei diese Art der Nutzung aber nicht mehr so ganz der Stand der Technik ist. X11 ist zwar eigentlich recht trivial und kann für sein Alter (~1988, wie stands da gerade grafisch bei Microsoft...) verdammt viel (google "window shape extension"...). Aber es ist halt schon eine Art Grafikassembler, das ganze Eventhandling ist grosses Gefummel und kann ziemlich ausarten. Und die damals vorhandenen Toolkits (Xt/Athena Widgets oder Motif) waren und sind immer noch PITA. So zum Verständnis ist rohe Xlib-Programmierung also ganz nett, aber mit neuen Toolkits (SDL, GTK und insb. Qt) hat man deutlich mehr Freude und heutige Systeme stören die paar MB an Libs auch nicht mehr...
Gast
#5066792
Schon klar, dass das Ganze etwas veraltet ist. Ich brauche es aber für einen bestimmten Zweck: Da ich gerade für kleine Mikrocontroller eine TFT Lib entwickle, möchte ich Screen-Shots machen. Mit der Kamera gibt es immer Spiegelungen. Da ist es einfacher ich binde die Lib an X11 über das simplifizierte Punkt-Interface. Was natürlich eventuell auch noch nett wäre: den Zugriff auf die Mauskoordinaten und deren Tasten. Markus schrieb: > Was natürlich eventuell auch noch nett wäre: den Zugriff auf die > Mauskoordinaten und deren Tasten. Ohne Events: XQueryPointer https://linux.die.net/man/3/xquerypointer
Gast
#5068150
Danke, das mit der Maus funktioniert. Nur die Tasten muss man sich aus der Mask noch "rausfitzeln":
Gast
#5068160
Markus schrieb: > möchte > ich Screen-Shots machen. Mit der Kamera gibt es immer Spiegelungen. Polarisations-Filter an der Kamera verwenden, Bilder nachbearbeiten: https://www.psd-tutorials.de/forum/threads/spiegelung-entfernen.42466/ http://praxistipps.chip.de/brillen-spiegelung-auf-einem-foto-entfernen-so-gehts_35154 http://www.chip.de/artikel/Polfilter-Zirkular-und-Anwendung-erklaert_80888462.html
Gast
#5068180
Zu spät, die Adafruit_GFX Library läuft schon mit X11.
Gast
#5069099
Markus schrieb: > Da ich gerade für kleine Mikrocontroller eine TFT Lib entwickle, möchte > ich Screen-Shots machen. Mit der Kamera gibt es immer Spiegelungen. Huch? Also normalerweise benutzt man für sowas doch keine Kamera, sondern mach das Ganze völlig anders: 1. Version: Du schreibst dir eine Programm für den PC, das in einem Fenster den Bildbereich deines TFT nachbildet. Deine Bibliotheksprogramme arbeiten dann beim Ausprobieren der Algorithmen auf den Clientbereich eben dieses Fensters und später dann im µC auf den Bildwiederholspeicher für das TFT. Nun kannst du dir in deinem PC-Programm doch ganz einfach den Inhalt eben dieses Fensters als Grafik abspeichern, BMP oder JPG oder was dein System halt so hergibt. Bei blankem Linux, also Screen=Konsole sehe ich da keine Chance, aber wenn du irgend ein Linux mit grafischer Oberfläche benutzt, dann sollte für diese doch etwas benutzbar sein - oder? Unter Windows hätte ich dir Delphi vorgeschlagen, für Linux dann eher Lazarus. Dort gibt es Elemente, die einen skalierbaren Canvas beinhalten, wo man nach Herzenslust drauf herummalen kann und man kann selbigen auch als Grafik abspeichern. Das ist allemal besser als ein Bildschirmfoto. 2. Version: Du läßt das Ganze auf deinem µC laufen und verbindst ihn per USB-CDC mit deinem PC und dort benutzt du das Terminalprogramm deiner Wahl. Dann richtest du dir ein einfaches Kommandoprogramm auf deinem µC ein, mit dem du den Bildschirm-Inhalt als Dump herunterladen kannst und ann auf dem PC nach Belieben weiterverarbeiten kannst. W.S. So wie ich das verstehe, will er statt dem Abfotografieren des TFT das Ergebnis der Lib in einem X-Fenster simulieren. Dann macht er ja genau Punkt 1... > Unter Windows hätte ich dir Delphi vorgeschlagen, für Linux dann > eher Lazarus. Jetzt lass doch endlich mal das blöde Lazarus sterben. Er macht offensichtlich alles in C und hat wohl auch keine Probleme damit, da braucht er nicht noch eine zweite Sprache... Die XLib-Programmierung geht in dem Fall schon (gibt halt Probleme mit den Redraws). Wenn mal Zeit ist, wäre aber Qt eine Alternative.
Gast
#5070518
Es ist immer wieder interessant zu sehen, dass viele einen sehr schlechten Trollerkennsinn haben. Einige haben es ja bemerkt, aber leider sehr viele nicht. Es ist doch eindeutig, dass Markus zur Spezies der Trolle gehört. Spätestens als er schrieb: "Ich will nicht lesen. Ich will ein Beispiel C-File und das passende Kommando zum compilieren damit ich das ganze innerhalb von 3 Minuten testen kann."
Gast
#5070588
>Ich will nicht lesen. >Ich will ein Beispiel C-File und das passende Kommando zum compilieren >damit ich das ganze innerhalb von 3 Minuten testen kann. Total erstaunlich: Manche Leute können sich nicht vorstellen, dass man etwas in 3 Minuten compilieren und ausprobieren kann und dass es eine durchaus vernünftige Sache ist, eine solches Beispiel für alle zur Verfügung zu stellen. Was ich ja im Laufe des Threads auch schließlich gemacht habe. Mal ehrlich: Wie bescheuert muss man sein? Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|