#1 19. Januar 2005 hallo!!! hab ein großes problem: mein lehrer gibt demjenigen ne 1 in it der ein tutoriual/proggi schreibt findet um in c++ grafikbefelhe(also so linie kreis usw) verständlich zu machen.-- er meinte hätt ihc ne liste mit den befehlen(hab ich), wie man sie einsetzt und ein prog schreiben dass ein fenster aufmacht ne linie zieht..hätt ihc ne 1 wär halt genial vorm halbjahreszeigniss.. bitte bitte hoffentlich kann mir da jemand helfen..hab diverses im inet gefunden aber nichts wirklich brauchbares-- + Multi-Zitat Zitieren
#2 19. Januar 2005 Warum könnt ihr hier nicht mal etwas präziesere Angaben zu euren Problemen machen??? Dann könnte man viel einfacher und schneller helfen! Also du willst das in Visual C++ haben, ja?! In der Konsole ist es ja simpel, da verwendest du die graphics.h. In Visual C++ kannst du hierzu z.b. die Klasse CDC nutzen. Welche Befehle hast du denn da? + Multi-Zitat Zitieren
#3 20. Januar 2005 also mein lehrer will quasi ein programm das wie ein winfesnter sit da wird einn strich von mir aus von x5 nach x 15 gezogen.. dann noch wie ich das eingeben muss..als dann halt des graphics.h und dann einfach bei void main() { bla bla x y bla bla } und das bla bla such ich die befehle hab ich gefunden Grafik _setvideomode(_VRES256COLOR) (graph.h) In den 640x480x256-Modus wechseln _setvideomode(_TEXTBW80); (graph.h) In den Textmodus zurückwechseln _setcolor (fa) (graph.h) Die Farbe festlegen mit der gezeichnet wird _setviewport(xt,yt,xb,yb) (graph.h) Ausschnitt festlegen worin gearbeitet wird; (xt,yt) wird zu (0,0) _moveto(x,y) (graph.h) Sich an die Stelle (x,y) setzen, bspw um eine Linie zu beginnen _lineto(x,y) (graph.h) Eine Linie zeichnen bis zu (x,y) _rectangle(_GBORDER, xt,yt, (graph.h) Ein Rechteck zeichnen; das Innere unverändert lassen xb,yb) _rectangle(_GFILLINTERIOR, (graph.h) Ein gefülltes Rechteck zeichnen xt,yt,xb,yb) _ellipse(_GBORDER,x1,y1,x2,x2) (graph.h) Zeichne einen Kreis oder eine Ellipse, ungefüllt. Darf nicht eine Linie oder ein Punkt sein. _GFILLINTERIOR für gefüllt struct textsettings ts; (graph.h) Mache die grafischen Schriften verfügbar _gettextsettings( &ts ); _setcharsize (dy,dx) (graph.h) Lege Höhe und Breite eines grafischen Buchstabens fest _grtext( x, y, "Watcom") (graph.h) Schreibe beginnend an der Stelle (x,y) (oben links ersten Buchstabens), grafisch den angegebenen Text char *nam; ¿ nam = (char*) malloc(_imagesize(0,0,640,120)); ¿ _getimage(0,0,640,120,nam); (graph.h) Mache Platz im Speicher frei für das Bild nam; lese es anschliessend vom Bildschirm ein _putimage(190,90,nam,_GPSET); (graph.h) Setze Bild nam an diese Stelle, überschreibe die alte Stelle (_GPRESET: invertiert; _GAND: Pixelwerte zusammenzählen; _GOR: zusammen-or-en; GXOR: für Animationen free( nam ); (graph.h) Den Speicherplatz den nam einnahm wieder freimachen _getpixel( x, y ); (graph.h) Farbe des aktuellen Pixels ermitteln _setpixel( x, y ); (graph.h) Farbe des aktuellen Pixels ändern naja hab des mit ner win32anwendung mit #include"graph.h" probiert..graph.h gibts ent sagt er hoffe es sit lesbar + Multi-Zitat Zitieren
#4 20. Januar 2005 Ach so ja, du arbeitest vermutlich mit einem Microsaft Produkt, wie dem Visual Studio, oder?! Die graphics.h stammt von Borland und wird mit den Compilern ausgeliefert. Das Problem ist, das Windows keine BGI Graphics unterstützt (wie die der graphics.h von Borland). Microsoft hat aber meines Wissens auch nichts Vergleichbares da. Die Befehle in deinem Beitrag oben dürften auch von irgendeiner Library eines Drittanbieters sein. Du könntest das wohl nur mit OpenGL oder DirectDraw machen, was aber schon konplizierter wird. Die windows-Konsole unterstützt glaub ich auch nur Textzeichen. Die andere alternative wäre also nur einen DOS-Compiler wie den von Borland zu benutzen... + Multi-Zitat Zitieren
#5 20. Januar 2005 hm ja wir haben ms visual studio 6... also unser lehrer weis nicht wie das geht er will es aber wissen er würde gern mal was mit grafik machen meint er... + Multi-Zitat Zitieren
#6 20. Januar 2005 Ja gut, etwas mit Grafik zu machen ist ja nicht schwer, aber eben nicht in der Konsole! Wenn ihr einfach nur ein normales Windows Programm mit Fenstern macht, ist zeichnen etc. absolut easy, aber bei der Konsole wird es nun mal ziemlich harig... + Multi-Zitat Zitieren
#7 21. Januar 2005 ja ist das dann einfahc? und wie geht das? könntest du ne art tuto schrieben und nen quellcode.. ?? + Multi-Zitat Zitieren
#8 21. Januar 2005 Nun ja, einfach ist relativ. Ich weiß ja nicht wie gut du coden kannst. Das Problem bei Microsofts C++ Produkten ist, das man so ziemlich alles selbst machen muss. In deinem speziellen Fall ist wohl das Komplizierteste der Umgang mit den Device-Handles, wenn du soetwas noch nicht kannst. Eine Win32 Anwendung mit Fenster zu erstellen ist vollkommen einfach, du musst bei NEU nur am Anfang keine win32anwendung sondern ....naja...das andere eben auswählen... sry, ich hab das visual studio nicht und kann dir daher nicht sagen wie das da heißt. Windows Anwendung oder SDI Anwendung oder so vielleicht. Schlag deinem Pauker mal vor die sollen für die Schule Borland C++ Builder kaufen, der ist für den Anfang spitze, weil er einem viel arbeit abnimmt. Theoretisch hast du dein Problem doch gelöst oder?! Du kannst deinem Lehrer sagen es geht nicht!...oder meinste dafür gibts keine 1?! Wenn du es ernsthaft mit Visual C++ versuchen willst kann ich dir evtl. C++ in 21 Tagen uppen, da ist eine gute Lektion über ein einfaches Proggie, bei dem man mit der Maus farbige linien in dem Fenster zeichnen kann. + Multi-Zitat Zitieren
#9 21. Januar 2005 Am besten du machst das mit HDC , zuvor erstellst du dann natuerlich noch ein Fenster. Du koenntest natuerlich auch die Grafikschnittstelle DirectX verwenden , aber na ja das würde ich halt so machen ... Wir benutzen uebrigens im Info-unterricht Delphi , damit gestaltet sich die Programmierung fuer Anfaenger wesentlich einfacher , das Zeichnen von Linien ist mit der Canvas(Leinwand) ein Kinderspiel. Hier der Code zum erzeugen eines Fensters: ( Ist eine Windows 32-Anwendung - Erstellung: Projekte -> Windows-32-Anwendung -> Ein leeres Projekt erstellen ; dann eine CPP-Datei zum Projekt hinzufügen und folgenden Code einfügen) Code: #include <windows.h> // Windows Bibliothek // CALLBACK Funktion LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { switch(message) { case WM_DESTROY: { done = TRUE; PostQuitMessage(0); return 1; } break; default:break; } // switch return (DefWindowProc(hwnd, message, wparam, lparam)); } // WindowProc int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hprevinst, LPSTR lpcmdline, int ncmdshow) { WNDCLASSEX winclass; MSG message; const char szclassname[] = "Klassenname"; winclass.cbSize = sizeof(WNDCLASSEX); winclass.style = CS_HREDRAW | CS_VREDRAW; winclass.lpfnWndProc = WindowProc; winclass.cbClsExtra = 0; winclass.cbWndExtra = 0; winclass.hInstance = hinst; winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); winclass.hCursor = LoadCursor(NULL, IDC_ARROW); winclass.hbrBackground = NULL; winclass.lpszMenuName = NULL; winclass.lpszClassName = szclassname; winclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClassEx(&winclass)) return(0); if (!(hwnd = CreateWindowEx(NULL, szclassname, "3D Spieleprogrammierung - Titelleiste", WS_POPUP, 0,0, 400,300, NULL, NULL, hinst, NULL))) return(0); // Windows Cursor ausschalten ShowWindow(hwnd,ncmdshow); UpdateWindow(hwnd); while(GetMessage(&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } // GetMessage return message.wParam } Wenn du jetzt auf MFC "umsteigen" willst , dann sag es *g* , dann kann ich mir weitere Erklaerungen über das HDCs sparen . Bei Bedarf kann ich dir auch das Erstellen des Fensters naeher erlaeutern ... Also schreib hier rein ob du wissen willst wie man dann weiter verfahren muss um Linien , Rechtecke etc zu malen .... @ResusPos: Ich glaube du meinst die MFC-Anwendungen ( In 21 Tagen C++ greift darauf auch zurück) + Multi-Zitat Zitieren
#10 22. Januar 2005 danke peter..aber keine ahnung muss ich die cpp datei dann leer machen und das einfügen oder dazwischen? weil da steht ja schon was hab klasse hinzufügen gemacht.. und dann steht da schon zeugs Code: #if !defined(AFX_SS_H__104291B3_D25A_4FC4_81EF_59DCF71604A1__INCLUDED_) #define AFX_SS_H__104291B3_D25A_4FC4_81EF_59DCF71604A1__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class ss { public: ss(); virtual ~ss(); }; #endif // !defined(AFX_SS_H__104291B3_D25A_4FC4_81EF_59DCF71604A1__INCLUDED_) und ja ihc würd gern wissen wies weiter geht + Multi-Zitat Zitieren
#11 22. Januar 2005 Hier das genaue Vorgehen: Datei-> Neu -> Projekte -> Windows 32-Anwendung auswaehlen und Namen fuer das Projekt eintippen -> Leeres Projekt Datei->Neu->Dateien -> C++ - Quelldatei auswaehlen und Namen eingeben Nun kannst du in diese cpp-datei den obigen Code eingeben , in der Datei steht vorher nichts ... + Multi-Zitat Zitieren
#12 23. Januar 2005 --------------------Konfiguration: test - Win32 Debug-------------------- Kompilierung läuft... test.cpp C:\Dokumente und Einstellungen\Sandi2\Desktop\test\test.cpp(12) : error C2065: 'done' : nichtdeklarierter Bezeichner C:\Dokumente und Einstellungen\Sandi2\Desktop\test\test.cpp(46) : error C2065: 'hwnd' : nichtdeklarierter Bezeichner C:\Dokumente und Einstellungen\Sandi2\Desktop\test\test.cpp(55) : error C2440: '=' : 'struct HWND__ *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat C:\Dokumente und Einstellungen\Sandi2\Desktop\test\test.cpp(71) : error C2143: Syntaxfehler : Fehlendes ';' vor '}' hm? das sind fehler mit denen ich leider nix anfangen kann.. weißt du was? hab das von dir kopiert... + Multi-Zitat Zitieren