Koordinatensystem zeichnen?
-
hm... ich glaub dazu is opengl oder direct3d ein bisschen überdimensioniert für
Naja, ich würde dir einfach die API deines betriebssystems empfehlen, damit kann auch ganz gut malen. unter windows dann eben WinAPI. Fester erstellen und reinzeichnen
-
Wieso? Texturierte Rechtecke, mit Bumpmapping und Lighting? Kommt doch cool :))))
-
-
Hallo!
Danke für eure Antworten. Wie gesagt, kann bisher nur das Standard Programmierzeugs, muss mich daher erstmal über WinAPI etc. schlau machen und wie das funktioniert, usw...
Die ZIP kann ich aus der Firma leider nicht öffnen, muss ich heute nachmittag dann von zuhause machen, aber vielen Dank! Klingt ja vom Dateinamen schonmal sehr interessantWas steht genau drin???
Liebe Grüße
-
206RC++ schrieb:
Was steht genau drin???
ein einfaches GUI Framework von mir mit einem Beispiel, wie man Rechtecke zeichnen kann:
MyApplication.h:
#ifndef MyApplication_h #define MyApplication_h #include "VertexwahnGUI.h" using namespace Vertexwahn::Application; using namespace Vertexwahn::GUI; class MyApplication : public EventDriven { public: MyApplication() : MyCanvas(10,10,400,300), MyWindow(L"Rechtecke") { // Anwendung beenden, wenn das Fenster geschlossen wird MyWindow.setDefaultCloseOperation(Window::EXIT_ON_CLOSE); // Größe des Fensters MyWindow.setSize(450,380); // Füge dem Fenster den Canvas2D hinzu MyWindow.add(&MyCanvas); // Canvas löschen MyCanvas.clear(Canvas2D::COLOR_WHITE); // Zeichne ein Rechteck MyCanvas.drawRectangle(0,0, 100, 100, Canvas2D::COLOR_RED); // Zeichne ein gefülltes Rechteck MyCanvas.drawFilledRectangle(100,100, 200, 200, Canvas2D::getColorFromRGB(0,255,0)); // Zeige das Fenster an MyWindow.show(); } private: Window MyWindow; // Ein Fenster Canvas2D MyCanvas; // Zum zeichnen von Rechtecken }; #endif
-
Hallo Vertexwahn!!
Vielen Dank für deine Hilfe! Habe mir natürlich in der Zwischenzeit auch die Zip gezogen, muss aber gestehen, dass ich noch so einige Verständnisprobleme hatte bzw. habe:).... Bin jetzt wieder in der Firma, komme also net dran an die Files, aber werds heute abend nochmal versuchen....
So wie das Beispiel aussieht... könnte ich da nicht einfach ne Schleife machen und "MyCanvas.drawRectangle(0,0, 100, 100, Canvas2D::COLOR_RED);" mit den entsprechenden Punkten wiederholen???Vielen Dank für die Hilfe!!!! LG, Ingo!!
-
Du brauchst eine Schleife?
Hab ein neues Demoprogramm geschreiben:
Es wird ein bewegtes Rechteck angezeigt, das wenn es an die Kanten des Canvas2D anstößt seine Richtung verändert. Das Rechteck wird in einer Endlosschleife abhängig von der Prozessorverarbeitungsgeschwindigkeit bewegt.
Ein Canvas2D ist ein Steuerelement, in das man hineinzeichnen kann. Z. B. kann man in ein solches Steuerelement Pixel, Linien oder Rechtecke zeichnen. Darauf aufbauend können weitere Objekte dargestellt werden.
Einfaches Beispiel wie man einen Pixel plottet:
Canvas2D MyCanvas(BREITE,HOEHE);
MyCanvas2D.setPixel(x,y,color);Damit man den Canvas sieht muss er sich auf einem Window Objekt befinden. Ein Window Objekt erstellt man wie folgt:
Window MyWindow(BREITE,HOEHE);Der Canvas2D wird dem Window Objekt wie folgt hinzugefügt:
MyWindow.add(&MyWindow);
-
Hallo...
Danke für deine Antwort...
Also die Situation die ich zZ habe ist folgende: Ich habe 4 Arrays...
rechtecke_breite[], rechtecke_laenge[], rechtecke_koordi_x[], rechtecke_koordi_y[]....
Anhand dieser Daten kann man ja quasi ein "Koordinatensystem" aufbauen....
Ich würde also gerne die Arrays durchgehen und dabei zeichnen lassen...
Kann man auf einem Canvas nur eine oder mehrere Zeichnungen vornehmen??? Dann müsste es doch eigentlich klappen mit einer einfachen Schleife oder?
LG, Ingo
-
206RC++ schrieb:
Also die Situation die ich zZ habe ist folgende: Ich habe 4 Arrays...
rechtecke_breite[], rechtecke_laenge[], rechtecke_koordi_x[], rechtecke_koordi_y[]....
Anhand dieser Daten kann man ja quasi ein "Koordinatensystem" aufbauen....
Ich würde also gerne die Arrays durchgehen und dabei zeichnen lassen...
Kann man auf einem Canvas nur eine oder mehrere Zeichnungen vornehmen??? Dann müsste es doch eigentlich klappen mit einer einfachen Schleife oder?
LG, IngoAso... dann nimm nicht die Rechtecke2.zip sondern die Rechtecke.zip
ja - mach einfach ne for Schleife z. B.:#ifndef MyApplication_h #define MyApplication_h #include "VertexwahnGUI.h" using namespace Vertexwahn::Application; using namespace Vertexwahn::GUI; class MyApplication : public EventDriven { public: MyApplication() : MyCanvas(10,10,400,300), MyWindow(L"Rechtecke") { MyWindow.setDefaultCloseOperation(Window::EXIT_ON_CLOSE); MyWindow.setSize(450,380); MyWindow.add(&MyCanvas); MyCanvas.clear(Canvas2D::COLOR_WHITE); for(i = 0; i < Anzahl_der_Rechtecke; i++) { MyCanvas.MyCanvas.drawRectangle( rechtecke_koordi_x[i],rechtecke_koordi_y[i], rechtecke_koordi_x[i]+rechtecke_breite[i], rechtecke_koordi_y[i]+rechtecke_laenge[i], Canvas2D::COLOR_RED); } MyWindow.show(); } private: Window MyWindow; // Ein Fenster Canvas2D MyCanvas; // Zum zeichnen von Rechtecken }; #endif
-
Hallo
Ja, so habe ich gehofft das es gehtKlasse..... Vielen Dank für deine Hilfe!!!
-
Hallo!
Wenn ich versuche die main auszuführen bekomme ich ca. 20 mal die Fehlermeldung "[Linker error] undefined reference to Vertexwahn::GUI::Canvas2D......" usw.... Hast du evtl. ne Ahnung was ich da noch falsch mache oder so? Ich benutzte DevC++, kann's daran liegen??? Edit: habs gerade mal mit VC++ ausprobiert, da sinds 179 Fehlermeldungenhäufig: "nicht aufgelöstes externes Symbol "__declspec(dll......"
Liebe Grüße, Ingo!
-
besorg dir Visual Studio 2005 Express (oder höher) zusammen mit dem PSDK und übersetzt es nochmal
-
Hallo.
k, danke... Nur wie krieg ich die Daten der Rechtecke aus meinem Programm in deins eingebunden (übergeben) ??? Deine Main in mein Programm mit einbinden und meine main dann in deinen ordner kopieren reicht ja nichtIrgendwie muss ich die Daten der Rechtecke ja noch in diese Datei kriegen:
using namespace Vertexwahn::GUI; class MyApplication : public EventDriven { public: MyApplication
..... usw...
Danke für die Mühe,
LG, Ingo
-
Vergiss seine main Methode und lern C++.
Du nimmst einfach seine Klasse, machst die Rechtecke dort als memberVariable und schreibst dir dann 2 Zugriffsfunktionen zum setzen und vll. auch holen der Rechtecke.
Dann erstellst du eine Instanz der Klasse, schreibst die Rechtecke hinein und lässt es laufen.
-
bin ja dabei c++ zu lernen, nur bräuchte die gewünschte funktionalität halt schon jetzt und nicht irgendwann, wenn ich's selber schreiben könnte
Naja ich werd mal schauen wie ich's hinkriege..... Gruß
-
Naja ich werd mal schauen wie ich's hinkriege
Das ist die richtige Einstellung, denn ich denke nicht das es jemand anders für dich machen wird
Wenn du einfach anfängst und ausprobierst, und DANN auf ein Problem stösst, dann kann dir hier auch sicherlicht geholfen werden. Aber komplettlösungen, dafür ham hier wohl die wenigsten Zeit
-
Hallo!
Habe auch nicht erwartet, dass mir jemand eine Komplettlösung erarbeitet hätte... wobei ich natürlich nichts dagegen hätte
Ne, will schon selber versuchen das ganze zum laufen zu bringen, brauchte nur Tipps wie ich beginnen soll
Thx, LG, IngoEdit: hab gerade ne suuuppeer idee.. ich machs wie viele andere hier scheinbar, und schreibe einfach nen job-angebot ohne bezahlung aus
LG
-
moinsen...
also hab jetzt vc++ express und psdk ordnungsgemäß installiert und konfiguriert... aber "Rechtecke" läuft leider immer noch nicht24 Fehler, 1 Warnung... muss ich denn außerdem noch was installieren/konfigurieren etc.?
Gruß
-
Nunja, "Meine Grabesstimmen flüstern mir: Poste die Fehlermeldungen !"
(zumindest die ersten 3)
-
Sorry...hast natürlich Recht....
Also es kommt IMMER, egal was ich ausführe... "Das Programm ... kann nicht gestartet werden. Das System kann die angegebene Datei nicht finden."... das kommt auch wenn ich nur ne ganze einfach cpp Datei mit einer cout anweisung mache....
In dem Rechtecke Projekt:
"MSVCRTD.lib (MSVR80D.dll) : error LNK2005: ..... ist bereits in ... definiert" ca. 10x...
danach
"MSVCRTD.lib (ti_inst.obj) : error .... ist bereits in ... definiert " 3 mal....
dann wieder
"msvcprtd.lib (MVSCP80D.dll) : error LNK 2005: .... ist bereits in ... definiert" ca. 10x....reicht das soweit? hab das auf'm notebook laufen, komme aber im firmennetz damit nicht ins netzwerk und kann daher nur abschreiben, sonst würd ich's ja einfach einfügen
LG & danke!