Kennt jemand ein einfaches Beispiel dazu?
:
Verschoben durch User
Da ist die große Frage: was meinst Du mit Linux? Im einfachsten Fall:
1 | printf("."); |
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...
Martin H. schrieb: > Im einfachsten Fall:printf("."); Du kennst seine verwendete Programmiersprache? Wo hast du deine Glaskugel gekauft, so eine will ich auch :-)
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.
>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.
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?
compilieren mit: gcc -o toolkit1 toolkit1.c -L/usr/X11R6/lib -lX11
Welche Farbe soll es denn sein (Rot, Grün, ...)? Meinst Du mit Fenster die Konsole bzw. ein Terminal oder eine richtige GUI-Anwendung?
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.
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
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.
1 | DrawPixel(screen,x,y,r,g,b); |
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 ?
Autor: HDA (Gast)
schrieb:
> ..
Danke für die Antwort.
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | #include <stdint.h> |
4 | |
5 | void gotoxy(int x,int y) |
6 | {
|
7 | printf("%c[%d;%df",0x1B,y,x); |
8 | }
|
9 | |
10 | int main(void) |
11 | {
|
12 | puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ |
13 | gotoxy(10,10); |
14 | printf("..............."); |
15 | |
16 | return EXIT_SUCCESS; |
17 | }
|
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.
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.
>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.
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.
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.
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.
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.
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.
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:
1 | XSelectInput (display, win, ExposureMask); |
2 | XMapWindow (display, win); |
3 | for (;;) { |
4 | XEvent event; |
5 | XNextEvent(display, &event); |
6 | if (event.type == Expose) |
7 | break; |
8 | }
|
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...
:
Bearbeitet durch User
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.
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 ;-)
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...
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
Danke, das mit der Maus funktioniert. Nur die Tasten muss man sich aus der Mask noch "rausfitzeln":
1 | if(XQueryPointer(display, win, &ret_root, &ret_child, &root_x, &root_y, |
2 | &win_x, &win_y, &mask)) |
3 | |
4 | {
|
5 | // This returns in -geometry format
|
6 | // I added \n so it actually shows something so people who test it know it works.
|
7 | //printf("+%d+%d\n", root_x, root_y);
|
8 | printf("%d %d , %x\n", win_x, win_y, mask); |
9 | if(mask&0x100)printf("left button pressed\n"); |
10 | if(mask&0x400)printf("right button pressed\n"); |
11 | if(mask&0x200)printf("center button pressed\n"); |
12 | }
|
13 | else
|
14 | {
|
15 | // your script will break with this output, send it to stderr and let the script
|
16 | // return something sensible like +10+10
|
17 | printf("hmmmm, where is that sneaky pointer?\n"); |
18 | }
|
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
Zu spät, die Adafruit_GFX Library läuft schon mit X11.
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.
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."
>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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.