WIE einfache grafische Oberfläche ?

03/04/2009 - 07:59 von Ernst Baumann | Report spam
Hallo allerseits,
Mit der IGEL-Grafik von Ulrich Kaiser konnte ich unter MS-VC++ 6.0
ganz einfach (ohne irgend etwas von Listener usw. zu verstehen)
grafisch arbeiten.
Leider bekomme ich dies mit MS Visual Studio 2005 nicht mehr hin (wenn
ich ein Projket, das unter MS-VC++ 6.0 funktionierte mit MS Visual
Studio 2005 öffne (wird dies vorher automatisch umgewandelt), dann
làuft es nicht mehr, d.h: wenn ich mache
Erstellen --> Projektmappe neu erstellen
dann kommt folgende Fehlermeldung:
Fehler 1 fatal error LNK1104: Datei "libci.lib" kann nicht
geöffnet werden. demoGrafik1

1) Was muss ich machen, damit ich diese einfache Grafikoberflàche von
Ulrich Kaiser auch unter MS Visual Studio 2005 nutzen kann ?

2) Wenn dies prinzipiell unmöglich sein sollte:
Kann mir jemand alternativ dazu eine genauso einfache Grafikoberflàche
benennen (zum Download) ?

mfg
Ernst


-BESCHREIBUNG -
Mit der Grafik-Programmierumgebung - kurz IGEL genannt - aus dem
Buch "C/C++" von Ulrich Kaiser (ISBN 3-934358-03-9, Verlag: Galileo
Press), kann man leicht, ohne großen Aufwand, kleine Grafikprogramme
erstellen.

Mit MS-VC++ 6.0 erstellt man dazu erst ein leeres Projekt:
Datei --> neu > Projekte > Win 32 Anwendung > Projektname
(z.B. "demoGrafik1" eingeben > ein leeres Projekt.
Dann kopiert man (außerhalb der Visual C++ Entwicklungsumgebung) mit
dem Explorer die 3 Dateien (IGEL.h, IGEL1.obj, IGEL2.obj) der CD des
Buchs in den automatisch angelegten Ordner hier: "demoGrafik1" des
Projekts.
In der Visual C++ Entwicklungsumgebung macht man folgendes:
1) Datei > neu > Dateien > C++-Quellcodedatei Dateiname z.B.
"zeichnung" eingeben"
2) Im linken Fenster geht man auf den Reiter "Dateien" (nicht auf
"Klassen")
Dann geht man jeweils mit der rechten Maustaste auf folgende
Ordnersymbole:
Quellcodedateien, Header-Dateien, Ressourcedateien
a) Header-Dateien > rechte Maustaste > Dateien zu Ordner
hinzufügen > IGEL.h
b) Ressourcedateien > rechte Maustaste > Dateien zu Ordner
hinzufügen (Wichtig: alle Dateien anzeigen lassen) > IGEL1.obj,
IGEL2.obj

Die Datei zeichnung.cpp muß wie folgt aufgebaut sein:
#include <stdio.h>
#include <stdlib.h>
#include "Igel.h"

void vorher(){
}

void zeichnung(){
}

void nachher(){
}

In die Funktion "vorher" können z.B. mit scanf sàmtliche
erforderlichen Eingaben gemacht werden, die man für das Grafikprogramm
benötigt. In die Funktion "vorher" muss die Anweisung set_windowpos
(siehe unten) vorkommen.

In die Funktion zeichnung schreibt man sàmtliche Funktionen, die eine
Grafikausgabe haben.
In die Funktion "nachher" muß vorerst keine Anweisung drinstehen.

Das IGEL zugrunde gelegte Koordinatensystem ist gekennzeichnet durch
den Koordinatenursprung O(0|0) links oben im Zeichenbereich.
Die y-Achse geht nach unten, die x-Achse nach rechts.
Ein Koordinatenpunkt entspricht genau einem Pixel.

Anweisungen von IGEL:
void set_windowpos(int x, int y, int breite, int höhe)
Das Grafikfenster wird an der Bildschirmposition mit den Koordinaten
x, y beginnend dargestellt.
Diese Anweisung muss in der Funktion "vorher" aufgerufen werden.

Farben:
Für Farben kann man selbstsprechende Konstanten oder genauso auch eine
Zahl verwenden:
SCHWARZ 0
WEISS 1
ROT 2
GELB 3
GRUEN 4
BLAU 5
GRAU 6
BRAUN 7

void pixel (int x, int y, int farbe)
Schreibt ein Pixel mit der entsprechenden Farbe an den Punkt (x,y).

void moveto(int x, int y)
void lineto(int x, int y, int farbe)
Mit moveto bewegt man einen fiktiven Kurosr an den Punkt (x,y). Mit
lineto wird dann von dort aus zu dem in lineto angegebenen Punkt mit
der entsprechenden Farbe eine Linie gezogen.

void rectangle (int x1, int y1, int x2, int y2,
int rahmenfarbe, int fuellfarbe)
Damit wird ein Rechteck mit linken oberen Eck (x1, y1), dem rechten
unteren Eck (x2, y2) und der entsprechenden Rahmen- und Füllfarbe
gezeichnet.

void rframe(int x1, int y1, int x2, int y2, int rahmenfarbe)
Zeichnet nur mit der entsprechenden Rahmenfarbe den Rahmen eines
Rechtecks.

void ellipse(int x1, int y1, int x2, int y2,
int rahmenfarbe, int fuellfarbe)
Damit wird eine Ellipse in ein fiktives, durch die zwei Eckpunkte (x1,
y1), (x2, y2) bestimmtes Rechteck, mit der entsprechenden Rahmen- und
Füllfarbe eingezeichnet.

void eframe(int x1, int y1, int x2, int y2, int rahmenfarbe)
Zeichnet nur mit der entsprechenden Rahmenfarbe den Rahmen einer
Ellipse.

void text(int x, int y, int groesse, int farbe,
int mode, char *fmt)
Gibt Text ab dem Punkt (x,y) mit der entsprechenden Größe, Farbe und
Modus (DECKEND, NICHT_DECKEND) aus. char *fmt ist die Parameterliste
wie bei printf.

Beispiel:
int zahl = 123;
text(100, 200, 10, SCHWARZ, DECKEND, "Ergebnis %d", zahl);


void textbox(int x1, int y1, int x2, int y2, int s, int tf,
int rf, int ff, int mode, char *fmt)
Die Textausgabe findet nur in dem entsprechenden Rechteck statt.
Darüber hinausreichender Text wird abgeschnitten. Der Text wird mit
der Textgröße s, der Textfarbe tf, der Randfarbe rf, der Füfffarbe ff
und dem Modus mode ausgegeben. char *fmt ist die Parameterliste wie
bei printf.

Beispiel:
int zahl = 10;
textbox(10, 10, 200, 30, 10, SCHWARZ, GRAU, GELB, DECKEND,
"Wert %d", zahl);

Um Grafikprogramme bis zu einem bestimmten Grad interaktiv gestalten
zu können, gibt es noch Funktionen zur Abfrage der Maus.
Es gibt einige symbolische Konstanten, mit denen der betàtigte
Mausbutton zurückgemeldet wird:
MBTN_LEFT 1
MBTN_MIDDLE 2
MBTN_RIGHT 3
MBTN_SHIFTLEFT 4
MBTN_SHIFTMIDDLE 5
MBTN_SHIFTRIGHT 6

int mouseclick(int *x, int *y)
Wartet auf einen Mausklick und liefert die die Koordinaten in den
Koordinaten x und y zurück.
Die Art des Mausklicks wird im Returnwert zurückgeliefert.

int checkmouse()
Prüft, ohne zu warten, ob die Maus geklickt wurde und gibt, falls dies
der Fall war, den zugehörigen Mausklick (symbolische Konstante)
zurück. Wurde die Maus nicht betàtigt, dann ist der
Returnwert 0.

void wait(int millisekunden)
Wartet die vorgegebene Zeit in Millisekunden und dient dazu, eine
Computergrafik zu verlangsamen, damit man mit dem Auge folgen kann.
 

Lesen sie die antworten

#1 Elmar Boye
03/04/2009 - 08:44 | Warnen spam
Hallo Ernst,

Ernst Baumann schrieb:
Mit der IGEL-Grafik von Ulrich Kaiser konnte ich unter MS-VC++ 6.0
ganz einfach (ohne irgend etwas von Listener usw. zu verstehen)
grafisch arbeiten.



Du bist mit Deiner Frage in der falschen Newsgroup gelandet -
hier geht es um C# und das .NET Framework.
Für die Frage bist Du eindeutig besser in der Gruppe
news:microsoft.public.de.vc
aufgehoben.

Gruß Elmar

Ähnliche fragen