Graphics.h Διασύνδεση με τη Βιβλιοθήκη Γραφικών Βήμα 1 Θα πρέπει να κατεβάσετε τα παρακάτω αρχεία: A) graphics.h http://www.uniqueness-template.com/devcpp/graphics.h Αποθήκευση στο: C:\Dev-Cpp\include B) libbgi.a http://www.uniqueness-template.com/devcpp/libbgi.a Αποθήκευση στο: C:\Dev-Cpp\lib
Graphics.h Διασύνδεση με τη Βιβλιοθήκη Γραφικών Βήμα 2 Δημιουργία νέου Project: Α) Επιλέγετε File -> New -> Project Β) Φροντίστε τα πεδία "Empty Project" και "C++ project" να είναι επιλεγμένα. Δώστε το όνομα του Project (θα είναι το ίδιο με του εκτελέσιμου που θα παραχθεί) Γ) Επιλέξτε OK Δ) Επιλέξτε File -> New -> Source File
Graphics.h Διασύνδεση με τη Βιβλιοθήκη Γραφικών Βήμα 3 Χρήση των αρχείων βιβλιοθήκης μέσα απ το εργαλείο Dev C/C++ Α) Επιλέξτε Project -> Project Options Β) Επιλέξτε το tab "Parameters" Γ) Στο πεδίο "Linker" εισάγετε τα παρακάτω: -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32 Δ) Επιλέξτε OK
graphics.h Παράθυρο γραφικών Αρχή των αξόνων (0,0) η αριστερήάνω γωνία του παραθύρου. (0,0) Χ (x,y) Y
graphics.h Στη βιβλιοθήκη γραφικών οι συντεταγμένες εμφανίζονται σε δύο μορφές: 1. Απόλυτες συντεταγμένες 2. Σχετικές συντεταγμένες (μετατόπιση ως προς μια προηγούμενη θέση)
Δημιουργία Παραθύρου Γραφικών int initwindow ( int height, int width, const char *title, int left, int top ); Δημιουργείται παράθυρο γραφικών, με τίτλο title, μήκος height και πλάτος width. Οι παράμετροι left και top καθορίζουν την μετατόπιση της αριστερής και ανώτερης πλευράς του παραθύρου από το (0,0). Υποχρεωτικές είναι οι 2 πρώτες παράμετροι (οι υπόλοιπες παίρνουν default τιμές).
Δημιουργία Παραθύρου Γραφικών #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ //open a 400x300 graphics window initwindow( 400, 300, Pliroforiki, 50, 50); system( pause ); return 0; }
Προθήκη κειμένου στο παράθυρο γραφικών void outtext(char *msg); Η συνάρτηση αυτή εμφανίζει το κείμενο msg στην οθόνη ξεκινώντας από το σημείο (0,0) της οθόνης void outtextxy(int x, int y,char *msg); Η συνάρτηση αυτή εμφανίζει το κείμενο msg ξεκινώντας από το σημείο (x,y) της οθόνης
Παράδειγμα #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ int x, y; initwindow( 500, 200, "Pliroforiki", 700, 50); outtext("e8niko kai Kapodistriako Panepisthmio A8hnwn"); outtextxy(200,50,"tmhma: Xhmiko"); system("pause"); return 0; }
Σχεδίαση Ευθειών void moveto(int x, int y); Η συνάρτηση αυτή μετακινεί τη γραφίδα στο σημείο (x,y) void lineto(int x, int y); Με τη συνάρτηση αυτή σχεδιάζετε μια ευθεία από το σημείο της γραφίδας έως το (x,y) Σχεδιάστε ένα ρόμβο
Πρόγραμμα Σχεδίαση ρόμβου #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ initwindow(700,300, "Pliroforiki", 50, 50); moveto(100,100); lineto(150,150); lineto(200,100); lineto(150,50); lineto(100,100); system("pause"); return 0; }
Σχεδίαση Ευθειών void line(int x1, int y1, int x2, int y2); Η συνάρτηση αυτή σχεδιάζει το ευθύγραμμο τμήμα μεταξύ των σημείων (x1,y1) και (x2,y2)
Σχεδίαση τόξων void arc(int x, int y, int stangle, int endangle, int radius) Με τη συνάρτηση αυτή σχεδιάζετε το τμήμα της περιφέρειας του κύκλου ακτίνας radius και κέντρου (x,y). Το τόξο ξεκινά από την stangle και κινείται αριστερόστροφα έως 90º την endangle. 180º 0º 270º
Πρόγραμμα σχεδιασμού τόξου 90º #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ initwindow(700,300, "Pliroforiki", 50, 50); arc(100,100,0,90,50); system("pause"); return 0; }
Σχεδίαση Γεωμετρικών Σχημάτων - Κύκλος void circle( int x, int y, int radius) Με τη συνάρτηση αυτή μπορείτε να σχεδιάσετε έναν κύκλο ακτίνας radius και κέντρου (x,y).
Πρόγραμμα - Σχεδίαση Κύκλου #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ initwindow(700,300, "Pliroforiki", 50, 50); circle(100,100,80); system("pause"); return 0; }
Σχεδίαση Γεωμετρικών Σχημάτων - Έλλειψη void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius); Με τη συνάρτηση αυτή μπορείτε να σχεδιάσετε την έλλειψη με κέντρο (x,y). Ο οριζόντιος και ο κατακόρυφος άξονας δίνονται αντίστοιχα από τα xradius, yradius. Η περιφέρεια ξεκινά από την stangle και σχεδιάζεται αριστερόστροφα έως την endangle.
Πρόγραμμα - Σχεδίαση έλλειψης #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ initwindow(700,300, "Pliroforiki", 50, 50); ellipse(200, 200, 0, 360, 100, 50); system("pause"); return 0; }
Σχεδίαση Γεωμετρικών Σχημάτων - Παραλληλόγραμμο void rectangle( int left, int top, int right, int bottom) Με τη συνάρτηση αυτή μπορείτε να σχεδιάσετε ένα παραλληλόγραμμο. Η αριστερή άνω γωνία είναι στο σημείο (left,top) και η κάτω δεξιά γωνία στο σημείο (right,bottom).
Πρόγραμμα Σχεδίαση #include <stdio.h> #include <stdlib.h> #include <graphics.h> Παραλληλογράμμου main(){ initwindow(700,300, "Pliroforiki", 50, 50); rectangle( 50, 50, 300, 250); system("pause"); return 0; }
Χρώματα στο BGI Τα 16 βασικά χρώματα αναπαρίστανται με ακεραίους από 0 έως 15 ή με τα συμβολικά ονόματα: BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHT RED LIGHTMAGENTA YELLOW WHITE
Χρήση Χρωμάτων void setcolor(int color); Με τη συνάρτηση αυτή μπορείτε να ορίσετε το τρέχον χρώμα σχεδίασης
Χρήση Χρωμάτων void setfillstyle(int pattern, int color); Συνάρτηση για τη μορφοποίηση του σχήματος. Γεμίζει με το χρώμα color ακολουθώντας το πρότυπο pattern.
Χρήση Χρωμάτων Ενδεικτικά αναφέρονται πιθανές τιμές της παραμέτρου pattern EMPTY_FILL SOLID_FILL LINE_FILL LTSLASH_FILL SLASH_FILL BKSLASH_FILL WIDE_DOT_FILL CLOSE_DOT_FILL
Σχεδίαση επιφάνειας - Έλλειψη void fillellipse(int x,int y, int xradius, int yradius); Συνάρτηση που σχεδιάζει την έλλειψη με κέντρο το (x,y), xradius οριζόντιο και yradious κάθετο άξονα. Η επιφάνεια χρωματίζεται ανάλογα με τα fillcolor και fillpattern.
Σχεδίαση επιφάνειας - Τόξο void pieslice(int x, int y, int stangle, int endangle, int radius); Μετησυνάρτησηαυτήσχεδιάζετετοτμήματης περιφέρειας του κύκλου ακτίνας radius και κέντρου (x,y). Το τόξο ξεκινά από την stangle και κινείται αριστερόστροφα έως την endangle. Η επιφάνεια που δημιουργείται από την ένωση των άκρων της περιφέρειας του τόξου με το κέντρο του κύκλου, χρωματίζεται ανάλογα με τα fillcolor και fillpattern.
#include <stdio.h> #include <stdlib.h> #include <graphics.h> Παράδειγμα Σχεδίαση Επιφάνειας main(){ int x, y; initwindow( 500, 200, "Pliroforiki", 700, 50); setcolor(red); setfillstyle(solid_fill,red); pieslice(150,100,0,100,50); setcolor(blue); setfillstyle(slash_fill,blue); fillellipse(300,100,50,20); system("pause"); return 0; }
closegraph(); Κλείσιμο παραθύρου
Επιστρεφόμενες Τιμές από το γραφικό περιβάλλον Οι κινήσεις που γίνονται με το mouse ή το πληκτρολόγιο, καλούνται συμβάντα και μπορούν να αναγνωριστούν. (Πχ το διπλό κλικ του Mouse είναι ένα συμβάν).
Επιστρεφόμενες Τιμές από το γραφικό περιβάλλον void getmouseclick(int kind, int x, int y); Η μεταβλητή kind δηλώνει το συμβάν, που αν πραγματοποιηθεί, αποθηκεύονται στα x και y οι συντεταγμένες του σημείου που βρίσκεται το mouse. Αν δεν υπάρχει τέτοιο συμβάν επιστρέφεται -1 στα x και y.
Επιστρεφόμενες Τιμές από το γραφικό περιβάλλον Ενδεικτικά αναφέρονται κάποιες πιθανές τιμές της παραμέτρου kind: WM_MOUSEMOVE (ανίχνευση κίνησης mouse) WM_LBUTTONDBLCLK (αριστερό διπλό κλικ) WM_LBUTTONDOWN (πίεση αριστερού κουμπιού) WM_LBUTTONUP (όταν ελευθερώνεται το αριστερό κουμπί) WM_RBUTTONDBLCLK (δεξί διπλό κλικ) WM_RBUTTONDOWN (πίεση δεξιού κουμπιού του mouse) WM_RBUTTONUP (όταν ελευθερώνεται το δεξί κουμπί του mouse)
Επιστρεφόμενες Τιμές από το γραφικό περιβάλλον int ismouseclick(int kind); Η συνάρτηση αυτή χρησιμοποιείται για την ανίχνευση του συμβάντος kind. Η τιμή που επιστρέφει είναι μη μηδενική αν ανιχνευθεί το συμβάν kind, διαφορετικά είναι μηδενική.
Επιστρεφόμενες Τιμές από το γραφικό περιβάλλον Ησυνάρτησηgetmouseclick() χρησιμοποιείται σε συνδιασμό με την ismouseclick(), για τον καθορισμό εντολών στην περίπτωση κάποιου συμβάντος
Επιστρεφόμενες Τιμές από το γραφικό περιβάλλον #include <stdio.h> #include <stdlib.h> #include <graphics.h> main(){ int x, y; initwindow( 500, 200, "Pliroforiki", 700, 50); while(!ismouseclick(wm_lbuttondown) ); getmouseclick(wm_lbuttondown,x,y); printf("mouse CLICKED X: %d AND Y: %d",x,y); } closegraph(); system("pause"); return 0;
Πρόγραμμα Φτιάξτε ένα πρόγραμμα σχεδιασμού γραμμών σε κάθε σημείο που κάνει κλικ ο χρήστης. Το πρόγραμμα να τερματίζει όταν ο χρήστης κάνει διπλό κλικ σε κάποιο σημείο
Πρόγραμμα σχεδίασης γραμμών με #include <stdio.h> #include <stdlib.h> #include <graphics.h> το κλικ main(){ int x, y, flag=2; initwindow( 500, 200, "Pliroforiki", 700, 50);
Πρόγραμμα σχεδίασης γραμμών με while(flag){ το κλικ } while(!ismouseclick(wm_lbuttondown) && flag) if (ismouseclick(wm_lbuttondblclk)) flag = 0; if (flag){ getmouseclick(wm_lbuttondown,x,y); lineto(x,y); printf("mouse CLICKED X: %d AND Y: %d",x,y); moveto(x,y); }
Πρόγραμμα σχεδίασης γραμμών με το κλικ closegraph(); system( pause"); return 0; }