Graphische Oberfläche: Programmieraufgabe
-
Hallo,
stehe vor folgendem Problem und komme überhaupt nicht weiter. Habe im Mechatronik Studium 3 Fachsemester lang Progammieren gehabt (C,C++ und OOP) jedoch wurde dies auch nur teilweise oberflächlich angeschnitten ( kleinere Algorithmen programmieren etc.).
In meinem Prakitkum soll ich nun folgendes Programmieren:http://img704.imageshack.us/gal.php?g=raster.png
Bild 1 zeigt ein Raster (1-6/ A-G) und Bild 2 ein Rotes X. Das Progamm soll nun folgendes machen: Es wird ein Wert vorgegeben, z.b. C5. An dieser Stelle soll nun das 2. Bild in das Raster eingesetzt werden. Danach wird ein neuer Wert vorgegeben, z.b. G2, und das Rote X verschiebt sich in dieses Raster.
Problem an der ganzen Sachen: ich weis definitiv nicht wie ich hiermit anfangen soll

Ist das nun eine graphische Oberflächen Programmierung ? Oder kann man die JPG´s irgendwie in einen C/C++ Code einbringen ? Ist C oder C++ hier überhaupt die richtige Wahl ?
Gearbeitet hab ich bis jetzt mit Microsoft Visual Studios, ich frage aber auch hier einmal nach ob dies das richtige Programm für dieses Problem ist.Ich hoffe ihr versteht alle was ich meine und könnt mir zumindest in Ansätzen helfen, vll auch ein gutes Buch empfehlen wo ich mich einlesen kann, ich stehe zur Zeit nämlich ziemlich aufn Schlauch

Freue mich über eure Antworten!!
MFGJohannes
-
Sinnvoll wären Blatt Papier und Stift, da würd ich sowas draufschreiben:
1.
Ich brauche:
- ein Feld(rows lang, columns breit)
- ich muss mir keine oder eine Zelle merken können
- eine Feldausgabe wäre schön zum testen obs klappt
- ich brauche eine Visualisierung als jpeg
2.
Dann überlegen:
Klasse für Daten, da gehört rein:
- grid [maxRow x maxColumn]
- die zZ belegte Zelle (als Index: (-1/-1) nix, sonst irgendwas zwischen (0...maxRow, 0...maxCol)
- möglichkeit eine Zelle zu setzen
- möglichkeit die gerade gesetzte Zelle abzufragen
- evtl ne debug visualisierung
Klasse fürs aufhübschen
- leeres Bild erstellen
- auf dem leeren Bild malen (( linien ))
- auf einem Teil des bildes malen (( kreuz ))
- farben: schwarz, weiss , rot
die currentSelectedCell
3.
Dann scharf nachdenken ... brauch ich das Grid wirklich? Reicht es nicht eigentlich mir die maximale GridRow/GridColumn zu merken um zu testen das nix ausserhalb des Grids gesetzt wird?
4.
Dann daraus ne .h stricken:class Grid { public: Grid(int rows=5, int cols = 7) : maxRow(rows), maxCol(cols), currRow(-1), currCol(-1) { } // setter inlined void mark(int row, int col) { /* test ob gültig, dann setzen, sonst nicht */ } void mark(char row, int col) { /* char --> int, an mark(int,int) weiterleiten) */ } // getter void marked(int & row, int & col) { row = currRow; col = currCol;} protected: const int maxRow; const int maxCol; int currRow; int currCol; private: void debugOut(); };5.
dann alles implementieren bis es tut wies soll. Wenn du wirklich die Felder per (char,int) adressieren sollst musst du dir ein paar Gedanken machen wie weit das gehen kann (A..Z, ÄÜÖ, a..zäüöß, ...) und deinemaxRow,maxColentsprechen restringieren.dann weiter mit aufhuebschen:
6.# include <someGrafikLib.h> // dont forget to link against... /* nicht gut ... class HuebschGrid : public Grid { // // hier das aufhuebschzeug rein }; */ /* besser */ class HuebschGrid { // hier das aufhuebschzeug rein private: Grid hasAGrid; };Grafikbib: google opencv(BIIIIG) oder http://freeimage.sourceforge.net/
// edit: -v, links
-
Oh das ist aber gerade sehr viel InputIm großen und ganzen verstehe ich was du sagst, jedoch würde ich gerne wissen ob es möglich ist das JPG Bild iwie mit dem C++ code zu verknüpfen bzw. ob es möglich ist meine vorgefertigten Bilder zu benutzen, oder ob ich diese Graphisch neu erstelllen muss.
Hier liegt bei mir glaube ich das größte verständnis Problem, also wie verknüpfe ich meine Bilder mit dem C++ Code (weil derartiges habe ich noch nicht gemacht). So wie du es mir beschrieben hast, lege ich dnan quasi ein Raster über diese Bilder oder ?
-
Ich bin mir nicht sicher, ob du wirklich jpgs einlesen musst.
"Verknüpfen" kannst du ein Bild nicht mit deinem Code. Du könntest es aber als Resource in deine Binärdatei einbinden.
Falls wirklich andere Dateiformate als bmp nötig sind, kannst du dir ja mal folgenden Link anschauen: http://www.codeproject.com/KB/graphics/ImageStone.aspx
-
und zum malen des Bildes...
sei maxRow=5, maxCol=7
sei cellSizeX = cellSizeY = 30;
sei lineWidth = 2;dann malst du dir ein schwarzes Bild der Größe
// cell-width/height line-width/height
X : (maxCol*cellSizeX) + ((maxCol+1)*lineWidth))
Y : (maxRow*cellSizeY) + ((maxRow+1)*lineWidth))und malst da fleissig weisse Blöcke der Größe cellSizeX*cellSizeY rein ... wenn du die geschickt malst, bleibt das Gitteraster über ... da wo das rote Kreuz rein muss malst du dir hinterher noch ein rotes Kreuz rein .. fertig.
Du brauchst also 0 Bilder einbinden ...
-
Alles klar, das klingt schon mal etwas plausibler
Wie gesagt, dass unverständlichste für mich ist das Zeichnen des Bildes, bzw. wie ich es dann mit meinem Code verknüpfe. Soetwas habe ich eben noch nie gemacht, jedoch klingt es, wenn man es liest, recht simpel
Ich leg dann mal los und bei weiteren Fragen meld ich mich, bzw. ihr drüft gerne weiterhin posten!