DrawPixel, DrawLine in Windows Fester

Moin,

ich habe vor 25 Jahren mal einige Spielereien auf nem C64 programmiert und später dann auch in Turbo Pascal.
Sowas wie “Pong” für die die es kennen, oder ein Pixelfeuerwerk, “herunterfallende” Pixel, Langton’s Ant und all son einfaches Zeug.
Sowas würde ich gerne wieder just for Fun in Windows machen.

Hier mal ein Beispiel, das ich auf einem nodeMCU und einem 4" Display laufen habe:

#include <SPI.h>
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
byte dir;
byte c;
byte d;
int x[1281];
int y[1281];
int mx;
int my;
int Dr;
void setup() {
  Serial.begin(115200);
  tft.init();
  tft.setRotation(1);
  my = tft.height();
  mx = tft.width();
  Serial.print(my);
  Serial.print(" ");
  Serial.println(mx);
  tft.fillScreen(TFT_BLACK);
  dir = 1;
  x[0] = 0;
  y[0] = 0;
}
void loop() {
  switch (dir) {
    case 1:
      x[0]++;
      break;
    case 2:
      y[0]++;
      break;
    case 3:
      x[0]--;
      break;
    case 4:
      y[0]--;
      break;
  }
  for (int i = 1280; i > 0; i--) {
    x[i] = x[i - 1];
    y[i] = y[i - 1];
  }
  tft.drawLine(x[0], y[0], 240, 160, TFT_RED);
  tft.drawLine(x[320], y[320], 240, 160, TFT_ORANGE);
  tft.drawLine(x[640], y[640], 240, 160, TFT_YELLOW);
  tft.drawLine(x[960], y[960], 240, 160, TFT_GREEN);
  tft.drawLine(x[1280], y[1280], 240, 160, TFT_BLUE);
  if (x[0] > mx - 1) {
    x[0] = mx - 1;
    dir = 2;
  }
  if (x[0] < 0) {
    x[0] = 0;
    dir = 4;
  }
  if (y[0] > my - 1) {
    y[0] = my - 1;
    dir = 3;
  }
  if (y[0] < 0) {
    y[0] = 0;
    dir = 1;
  }
}

Wie bring ich denn sowas in Windows in einem Fenster zum laufen, also nicht auf dem nodeMCU mit Display, sondern die Grafikausgabe soll in Windows in einem Fenster sein.

Ich suche da jetzt schon ne kleine Ewigkeit und finde nix.

Ich will einfach nur ein paar Schleifen durchlaufen, und dann mit DrawPixel, DrawLine und DrawCircle und sowas in eine Grafikfenster schreiben.

Könnt ihr mir da ein paar Tipps geben?!

Danke und lieben Gruß,
Chris

Wenn Du Turbo Pascal kennst, solltest Du Dir mal Lazarus anschauen, wenn Du für Windows programmieren willst. Ist sowas wie ein freies Delphi. Ansonsten JAVA-basiert Prozessing.

Gruß Tommy

Okay und in C++ geht da nix? Weil ich ja seit gut eineinhalb Jahren mit der Arduino IDE programmiere.

Hallo,

MS Visual Studio

Ich hatte schon Eclipse und MS Visual Studio installiert. Damit bin ich aber nicht klar gekommen. Da hat schon das mitgelieferte "Hello World" nicht funktioniert. Hab ich beides wieder deinstalliert, nachdem ich den Tipp bekommen habe Visual Studio Code sollte etwas einfacher sein. Aber auch dafür finde ich bisher nur "Hello World" Beispiele mit Ausgabe in der Console. Ich suche ein Beispiel für einfachste Grafik wie DrawPixel, DrawLine usw. Suche per Google und YouTube bisher komplett erfolglos. Ich kann mir nicht vorstellen dass das nicht geht. Aber wo soll ich suchen oder wo kann ich fragen (weiss einer ein gutes Forum)?

Lieben Gruß, Chris

Hallo,

themanfrommoon: Hab ich beides wieder deinstalliert, nachdem ich den Tipp bekommen habe Visual Studio Code sollte etwas einfacher sein.

Mit der Einfachheit der Programmierung hat das nichts zu tun. Visual Studio Code ist im Prinzip ein in JavaScript geschriebener Texteditor mit vielen Funktionen für Entwickler. Der einzige Unterschied bei der Programmierung wäre, dass das große Visual Studio für einige Programmarten Assistenten hat, die Codegerüste generieren können. Ansonsten liegen die Unterschiede in Bedienung und Workflow.

themanfrommoon: Aber auch dafür finde ich bisher nur "Hello World" Beispiele mit Ausgabe in der Console. Ich suche ein Beispiel für einfachste Grafik wie DrawPixel, DrawLine usw. Suche per Google und YouTube bisher komplett erfolglos. Ich kann mir nicht vorstellen dass das nicht geht.

Es gibt da sehr viele Wege.

Erst einmal ist es wichtig zu wissen, dass Windows zwischen Konsolenanwendungen und grafischen Anwendungen unterscheidet. In Konsolenanwendungen ist in der Tat nur Textausgabe möglich.

Grafikanwendungen unterteilen sich noch in normale Fensteranwendungen, Apps (Kacheln) und Spiele:

-Normale Anwendungen gibt es auch wieder in zwei Geschmacksrichtungen a) nativ Die klassiche Grafikschnittstelle heißt GDI -> Google nach MSDN GDI

Gibt es auch als etwas modernere C++ Schnittstelle -> Google nach MSDN GDI+

b) mit .net hier gibt es Windows Forms (basiert intern auf GDI+) und WPF (basiert auf DirectX, das kommt gleich noch)

  • Modern Apps verwenden eine Grafik ähnlich zu WPF

  • Für Spiele gibt es zwei grundlegende Schnittstelen a) DirectX ist die native Spielegrafikschnittstelle von Windows. b) OpenGL ist portabler, erfordert aber teilweise Treiber von Drittherstellern

So, lufthol, das sind die grundlegenden Möglichkeiten.

Darüber gibt es natürlich diverse Bibiliotheken um das zu verpacken. Im Fensterbereich für C++ z.B. Qt.

Im Spiele-/ Kreativbereich für C++ z.B. https://www.sfml-dev.org/ https://libcinder.org/ https://openframeworks.cc/

Das könnte am ehesten sein, was Du suchst, auch wenn es am Anfang recht komplex daherkommt. OpenFrameworks hat auch wieder eine Verbindung zu Arduino, wird z.B. für interaktive Kunstobjekte verwendet.

Wenn du dich mit Java anfreunden kannst ist Processing super für deine Anwendung geeignet und enthält eine Menge Beispiele.

Die verwendete IDE ist die Mutter der Arduino IDE, sollte dir also vertraut vorkommen.

Ich habe mir jetzt mal Processing runtergeladen und angeschaut. Grafikmäßig ist das ja der Hammer, viel viel viel mehr als ich brauche. Allerdings habe ich kein Beispiel gefunden, wo man in eine Textbox Daten eingeben kann. Wenn es das nicht gibt, ist das leider unbrauchbar für meine Anwendung.

Ich brauche ungefähr sowas: Textboxen, einfache Pixelgrafik, usw. |500x378 Quelle: http://codermonkey65.blogspot.com/2012/09/basic-control-theory-in-c.html

Lieben Gruß, Chris

Informiere dich mal über controlp5.

Nee, irgendwie nicht, das sieht mir alles zu abgespaced aus.

Ich versuche mal eher mit der Standard normalen Windows GDI klarzukommen.

In meinem letzten Post, die PID Editor, der sieht grafisch schonmal genauso aus, wie ich mir das vorstelle. Völlig Standard Windows Grafik. Genau das will ich haben.

So, nun ist nur noch die Frage: 1. Mit was programmiere ich das? 2. Wo finde ich ein paar einfache Beispiele? (so wie in der Arduino IDE unter -> Beispiele)

Lieben Gruß, Chris

Na dann. Viel Erfolg.

themanfrommoon: 1. Mit was programmiere ich das? 2. Wo finde ich ein paar einfache Beispiele? (so wie in der Arduino IDE unter -> Beispiele)

  1. Visual C++, Lazarus
  2. In den jeweiligen Paketen zu den Programmiersprachen und den einschlägigen Foren. So ähnlich einfach wie in der Arduino-IDE wäre höchstens Processing gewesen.

Gruß Tommy

Processing hab ich mir angesehen. Alle Beispiele die dabei sind, sind grafisch um Welten aufwendiger gestaltet als das was ich suche. Ich suche DrawPixel und DrawLine. So einfach wie vor 25 Jahren auf einem C64. Sowas habe ich in Processing nicht gesehen. Dieses controlp5 macht zwar TextBoxen, aber nicht in der üblichen old-school Windows Optik. Die will ich aber haben, siehe oben diese P.I.D. Simulator.

Mit Turbo Pascal habe ich schon 25 Jahre nicht mehr programmiert. Das wäre für mich also eine Umstellung von Arduino C (oder ist das C++?!?). Delphi habe ich noch nie programmiert.

Visual Studio Code habe ich schon installiert. Nun fehlen mir aber hier mal ein paar einfache Beispiele.

Und nun installiert ich mal Visual Studio Community. (hatte ich vorher schon drauf und habe es wieder deinstalliert. Nun kriegt es eine zweite Chance....)

Hallo,

das bekommst Du doch recht einfach mit Visual Studio hin. Die Oberfläche stellt dir das Programm zu Verfügung inc. der erforderlichen Schablonen.

Dann fügst Du einen Buton ein "Start" und in dem zugehörigen Ereigniss zeigst Du Deine Linien , Kreise , was immer

Visual Basic

geht besimmt auch unter C ähnlich must mal in der Hilfe des Stuios nachsehen

Heinz

Visual Studio dauert noch ne Weile, der will erstmal 16GB installieren.....

Aber ich scheitere schon wesentlich früher. Ich probiere es aktuell mit Visual Studio Code:

Ich doppelklicke auf das Icon von "Visual Studio Code". .....und dann? Da isses schon aus bei mir, keine Ahnung was ich dann tun soll. In der Arduino IDE ist da bereits der CodeEditor auf. Dort schreibe ich den Code rein, kann ihn kompilieren und ausführen. Versuche ich genauso bei Visual Studio Code: Datei neu, Code schreiben (oder einfügen). ...und dann?! Ich speicher das mal erst, da kann ich ja in allen möglichen Formaten speichern, also mal .cpp ausgewählt. Okay, dann ändert sich die Farbe vom Code, wahrscheinlich eine Codehilfe basierend auf der gewählten Sprache. Und dann? Wie kann ich das Programm starten? Da passiert rein gar nichts?!!

Lieben Gruß, Chris

Da wird es bestimmt eine Hilfe im Programm geben.

Ich habe Dir ja gesagt, dass das nicht so einfach wird. Da musst Du wohl erst mal Deine GUI-Elemente mit einem GUI-Editor bauen und dann den verbindenden Code schreiben. So war es früher (tm) bei Delphi.

Da wird es aber auch Foren dafür geben. Das ist definitiv kein Arduino-Thema. Bei Prozessing hätte es ja noch Berührungspunkte wegen der Verwandtschaft zur Arduino-IDE gegeben.

Gruß Tommy

Rentner: Visual Basic

Wieso immer Visual Basic? Das ist der allerletzte Dreck und existiert nur weil man Firmen den Umstieg auf .NET erleichtern wollte. Aber wenn man von einem C Dialekt kommt muss man erst mal eine komplett andere Syntax lernen

Wenn dann C# oder vielleicht Visual C++ wenn man bei C++ bleiben will.

Sehr interessant! Ich habe gerade ein Tutorial für Visual Basic 2017 gesehen. Das ist das erste von allen anderen, das genau das zeigt was ich suche. -> neues Projekt -> eine leere Form steht da, und man kann eine TextBox per Drag&Drop erstellen, usw. So schön einfach kann es sein. So hab ich das bei keinem anderen Tutorial von keiner anderen Sprache gesehen. Warum nicht?

Ich bin zu blöd für diese Welt! Ich will nur ein mega einfaches Programm schreiben, was vor 25 Jahren auf einem C64 super easy war. Es gelingt mir ums verrecken nicht. Ich bin mega genervt.

Nun habe ich Visual Studio runtergeladen und auch noch Qt, und ich stehe wie der Ochse vorm Berg. Das kann doch wohl nicht war sein....?!?!?!

In der Arduino IDE ist das so mega easy, das hab ich sofort verstanden, obwohl ich nie vorher C++ programmiert habe.

Wieso geht das nicht genauso einfach statt auf einem µC in Windows? Ich möchte nun Serenifly's Rat folgen und C# benutzen (habe da gerade nochmal ein bischen drüber gelesen, und ich kann die Argumentaton teilen :-)

Ich möchte also einfach nur in C# ein paar blöde Pixel und Linien ausgeben, und ein paar Werte aus TextBoxen auslesen. Nix spieleprogrammieren, Webanwendungen und Netzwerkwasweiss ich, einfach nur ein paar blöde Pixel. Ich raffs nicht. Ich weiss nichtmal wie ich anfangen soll.

Gibt's nicht irgendwo C# auf Windows für Vollidioten? Das kann doch nicht so schwer sein?!

Lieben Gruß, der verzweifelnde Chris....

Qt brauchst du nicht. .NET hat zwei GUI Frameworks. Das ältere Windows Forms (veraltet und nicht mehr weiterentwickelt, aber als Anfänger sehr einfach zu erlernen) und das modernere Windows Presentation Foundation (WPF). Zu denen gibt es im Internen massig Anleitungen

Es gibt auch Anleitungen um damit auf Komponenten zu zeichnen. Da kann man z.B. einfach ein Panel nehmen. Da kann man auch mehrere Varianten finden.

Es gibt mit der Chart Klasse auch eine eigene Kompetente für Diagramme, der man einfach Koordinaten oder Werte zum Anzeigen übergeben kann. Wobei das nicht ganz trivial ist, da es da unzählige Optionen und Einstellungen gibt: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.datavisualization.charting.chart?view=netframework-4.7.2 http://www.just-about.net/mschart-grundlagen