Ich muss unter MFC ein Projekt erweitern. Wie kann man unter MFC eine Linie einen Punkt ein Rechteck zeichnen lassen? In Google habe ich schon geschaut, hab da nichts gescheites gefunden. hat von euch jemand ein Beispielprojekt wo man sehen kann, wie so was unter MFC funktioniert? Das Problem wo ich noch dabei habe ist, dass ich nicht genau weiss wo man da den Code plazieren muss.
Uwe wrote: > Ich muss unter MFC ein Projekt erweitern. Wie kann man unter MFC eine > Linie einen Punkt ein Rechteck zeichnen lassen? > In Google habe ich schon geschaut, hab da nichts gescheites gefunden. > hat von euch jemand ein Beispielprojekt wo man sehen kann, wie so was > unter MFC funktioniert? Das Problem wo ich noch dabei habe ist, dass ich > nicht genau weiss wo man da den Code plazieren muss. Zeichnest du in einem View oder in einem Control, welches in einem Dialog eingesetzt wird? Beides funktioniert ähnlich, nur musst du dich in verschiedene Funktionen reinklinken. View: Du hängst dich in die OnDraw rein Control: Du hängst dich in die OnPaint rein In beiden Funktionen kriegst du einen CDC Pointer übergeben, der die Zeichenfläche repräsentiert. Und über den CDC erzeugst du dann deine Zeichnung. CDC hat eine Menge Memberfunktionen, zb. MoveTo, LineTo, SetPixel, Rectangle, TextOut, etc .... Wenn du damit Schwierigkeiten hast, dann solltest du mal zumindest ein MFC Tutorial von vorne weg durcharbeiten. Das sind die absoluten Basics.
Ja am besten wäre, wenn ich so ein Beispiel projekt hätte, wo alles wesentlich vorhanden ist. Ich möchte mit dem OnDraw arbeiten.
Mit diesem Tutorial kannst du erstmal ein paar MFC Grundlagen lernen (incl. Grafiken): http://home.wtal.de/ranzurmall/visualc/ es baut zwar auf Visual C++ auf, aber man kann bestimmt auch einiges für andere Compiler ableiten.
Uwe wrote: > Ja am besten wäre, wenn ich so ein Beispiel projekt hätte, wo alles > wesentlich vorhanden ist. Ich möchte mit dem OnDraw arbeiten. Irgendwo in deiner Dev-Studio Installation gibt es das bekannte 'Scribble' Demo. Das geht in mehreren Stufen den Prozess des Erstellens einer SDI Applikation durch. Inklusive Zeichnen. ANsonsten: Das ist nicht weiter schwer. Lass die mal ein neues Projekt erzeugen: SDI Applikation Dann gehst du in die View Klasse. Der Wizard hat dort schon die OnDraw Funktion eingebaut. In die ergänzt du mal: (CMyView und CMyDoc werden bei dir anders heissen, je nachdem wie du dein Projekt benannt hast. Ist aber egal, den Teil hat der Wizard ja bereits fertig erzeugt;
1 | void CMyView::OnDraw( CDC* pDC ) |
2 | {
|
3 | CMyDoc* pDoc = GetDocument(); |
4 | ASSERT_VALID(pDoc); |
5 | |
6 | // hier ergänzt du
|
7 | |
8 | pDC->MoveTo( 0, 0 ); |
9 | pDC->LineTo( 100, 100 ); |
10 | |
11 | // bis hier
|
12 | }
|
Das ist schon alles. Neu builden und laufen lassen und dann muss im Fenster eine Linie zu sehen sein. 0-Punkt links oben, x geht nach rechts, y geht nach unten. Schau dich wirklich nach einem Tutorial im Web um. Das ist eine der leichtesten Übungen mit MFC. Da warten noch wesentlich schwierigere Dinge auf dich.
Ich verfluche echt MFC. Ich hab da schon probleme mit dem Poi0nter CMyDoc* pDoc = GetDocument(); Funktioniert überhaupt gar nichts. Hat jemand ein lauffähiges Programm.
1 | void Draw(CDC* pDC) |
2 | {
|
3 | |
4 | CPen pen; // Konstruieren, dann Initialisieren |
5 | pen.CreatePen( PS_SOLID, 1, RGB(255,0,0)); |
6 | |
7 | pDC->MoveTo(10,200); |
8 | pDC->LineTo(550,200); |
9 | |
10 | }
|
Hab diese Funktion erstmal erstellt. Ich kann aber keine Linie sehen.
Muss man die OnDraw Funktion dann noch irgendwo aufrufen? Ich raffe da echt nichts. Ich benöte nur mal ein lauffähiges Beispiel, das mir eine Linie zeichnet.
schau dir halt mal das Tutorial, was ich weiter oben gepostet habe, an. Ich glaube aber die Funktion OnDraw wird automatisch aufgerufen, wenn das Fenster, in dem gezeichnet werden soll, geöffnet wird. Also ist die Funktion keine "unabhängige" Funktion, sondern eine Funktion eines Objektes / einer Klasse. Um genau zu sein, nichtmal vom Fenster an sich, sondern von der Ansicht (View) Kasse des Fensters. Ich bin mir nicht ganz sicher ob ich mich so richtig ausgedrückt habe, aber ich denks mal. Hab mich auch erst ein bissel mit MFC beschäftigt. Und um das ganze zu verstehen musst du eh erstmal nen Tutorial oder nen Buch zu Hand nehmen. Meiner Meinung nach, kann man mit MFC nicht mal einfach so nen Strich zeichnen, man muss das Gerüst dahinter verstanden haben...
Markus wrote:
>
1 | > void Draw(CDC* pDC) |
2 | > { |
3 | >
|
4 | > CPen pen; // Konstruieren, dann Initialisieren |
5 | > pen.CreatePen( PS_SOLID, 1, RGB(255,0,0)); |
6 | >
|
7 | > pDC->MoveTo(10,200); |
8 | > pDC->LineTo(550,200); |
9 | >
|
10 | > } |
11 | >
|
> > Hab diese Funktion erstmal erstellt. Ich kann aber keine Linie sehen. Die Funktion sollte OnDraw heißen. Außerdem musst du dem Framework klarmachen, dass diese Funktion auch aufgerufen werden soll (von selbigem). Bei Microsoft Visual C++ 6.0 gibts unter Ansicht den Klassenassistenten, womit man einfache Event-Handler hinzufügen kann. PS: Den Gefallen dir ein lauffähiges Programm abzuliefern wird dir hier sicher niemand tun.
naja bei dem Tutorial is ein lauffähiges Beispiel dabei, kann man sich alles runterladen. Nur ohne die Grundlagen von MFC zu kennen, versteht man im Quelltext recht wenig. Deshalb sollte man halt auch das Tutorial oder nen Buch dazu lesen...
Markus wrote:
>
1 | > void Draw(CDC* pDC) |
2 | > { |
3 | >
|
4 | > CPen pen; // Konstruieren, dann Initialisieren |
5 | > pen.CreatePen( PS_SOLID, 1, RGB(255,0,0)); |
6 | >
|
7 | > pDC->MoveTo(10,200); |
8 | > pDC->LineTo(550,200); |
9 | >
|
10 | > } |
11 | >
|
> > Hab diese Funktion erstmal erstellt. Ich kann aber keine Linie sehen. Wozu red ich mir eigentlich den Mund fusselig. Die Funktion heist OnDraw und ist bereits vom Wizard erstellt worden, wenn du ein neues Projekt erzeugst. Du musst lediglich 2 Zeilen (in Worten: zwei) in eine bereits vorhandene Funktion einfügen. Das kann doch nicht so schwer sein.
Karl heinz Buchegger wrote: > Die Funktion heist OnDraw und ist bereits vom Wizard > erstellt worden Ich bin mir gerade nicht 100% sicher, aber ich meine, dass die OnDraw nicht standardmäßig drin ist. Wenn du dir da jetzt nicht 100% sicher bist, werde ich das aufjedenfall nochmal nachprüfen. Aber egal: Im Klassenassistenten kannst du diese Funktion hinzufügen.
Simon K. wrote: > Karl heinz Buchegger wrote: >> Die Funktion heist OnDraw und ist bereits vom Wizard >> erstellt worden > > Ich bin mir gerade nicht 100% sicher, aber ich meine, dass die OnDraw > nicht standardmäßig drin ist. Wenn du dir da jetzt nicht 100% sicher > bist, werde ich das aufjedenfall nochmal nachprüfen. Ich habs geprüft. Sie wird. Alles was er tun muss: * ein neues Projekt erzeugen. Ob SDI oder MDI ist erst mal egal * Dem Projekt einen Namen geben * Das CPP File für die View Klasse aufmachen * runter scrollen bis zur OnDraw Funktion * Die beiden Zeilen (stellvertretend für eine Grafik) einfügen * F7 - Build * F5 - Ausführen * Sich am Ergebnis erfreuen und überlegen, wie man mit mehr Linien eine komplexere Grafik hinkriegt.
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.