XDrawPoint( Display* /* display */, Drawable /* drawable, window or pixmap */, GC /* gc */, int /* x */, int /* y */ );Η
XDrawPoint
σχεδιάζει μια σημείο στη θέση (x,y)
.
XDrawLine( Display* /* display */, Drawable /* drawable, window or pixmap */, GC /* gc */, int /* x1 */, int /* y1 */, int /* x2 */, int /* y2 */ );Η
XDrawLine
σχεδιάζει μια γραμμή απο το σημείο (x1,y1)
εως το (x2,y2)
.
XDrawRectangle( Display* /* display */, Drawable /* drawable */, GC /* gc */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */ );Η
XDrawRectangle
σχεδιάζει ένα παραλληλόγραμμο με αρχή το σημείο (x,y)
και
διαστάσεις (width,height)
.
XDrawArc( Display* /* display */, Drawable /* drawable */, GC /* gc */, int /* x */, int /* y */, unsigned int /* width */, unsigned int /* height */, int /* angle1 */, int /* angle2 */ );Η
XDrawArc
σχεδιάζει ένα τόξο με πλάτος width
,
ύψος height
το οποίο αρχίζει από τη γωνία angle1
και εκτείνεται σε γωνία angle2
. Οι γωνίες μετρώνται σε 1/64 της
μοίρας. Για την δημιουργία ενός πλήρους κύκλου διαμέτρου 100 pixel θα
δώσουμε:
XDrawArc( display, window, gc, 100, 100, (0*64), (360*64) );Επίσης υπάρχουν και αντίστοιχες συναρτήσεις για γεμάτα παραλληλόγραμμα και τόξα,
XFillRectangle
και
XFillArc
που λαμβάνουν τα
ίδια ορίσματα με τις παραπάνω. Επιπλέον για την περίπτωση που θέλουμε να
σχεδιάσουμε πολλά ίδια σχήματα συνεχόμενα (μια ομάδα γραμμών για παράδειγμα)
υπάχουν οι συναρτήσεις XDrawPoints
,
XDrawLines
,
XDrawArcs
,
XFillArcs
,
XDrawRectangles
και XFillRectangles
.
Οι συναρτήσεις αυτές παίρνουν τα ορίσματα
display
, drawable
και window
και στην
συνέχεια ένα πίνακα με αντίστοιχες δομές (XPoint
,
XArc
, XRectangle
), μαζί με τον αριθμό των σχημάτων
που υπάρχουν σε αυτόν. Για παράδειγμα η XDrawArcs
ορίζεται:
XDrawArcs( Display* /* display */, Drawable /* drawable */, GC /* gc */, XArc* /* arcs */, int /* number of arcs */ );όπου η δομή
XArc
ορίζεται ως εξής:
typedef struct { short x, y; unsigned short width, height; short angle1, angle2; } XArc;Για τον προσδιορισμό των χαρακτηριστικών των διαφόρων σχημάτων υπάρχουν οι συναρτήσεις:
XSetLineAttributes( Display* /* display */, GC /* gc */, unsigned int /* line width */, int /* line style */, int /* cap style */, int /* join style */ );Η συνάρτηση
XSetLineAttributes
προσδιορίζει το πάχος των γραμμών (line
width), τη μορφή τους (line style), το τρόπο τελειώματός τους και τον τρόπο
ενωσής τους (join style). Οι τιμές που λαμβάνουν τα τρία τελευταία ορίσματα
είναι προκαθορισμένες σταθερές (defines) που ορίζονται στο Χ.h
. Έτσι οι
γραμμές μπορούν να έχουν συμπαγή μορφή (LineSolid
), διακεκομμένη
(LineOnOffDash
) ή διακεκομμένη με εναλλαγή foreground και background
χρώματος (LineDoubleDash
). Ο τρόπος τελειώματος (cap style, έχει νόημα για
γραμμές πάχους > 2) μπορεί να είναι CapButt
(κανονικός), CapRound
(στρογγυλεμένα άκρα), CapNotLast
(κανονικός αλλά χωρίς το τελευταίο σημείο)
και CapProjecting
(κανονικός με επέκταση της γραμμής κατά line_width/2). Ο
τρόπος ένωσης των γραμμών (join style, έχει νόημα πάλι για πάχος > 2) μπορεί
να είναι JoinMiter
(μυτερή ένωση), JoinRound (στρογγυλοποιημένη ένωση) ή
JoinBevel
(ίσια ένωση).
XSetDashes( Display* /* display */, GC /* gc */, int /* dash_offset */, char* /* dash_list */, int /* n */ );Ορίζει την μορφή που θα έχουν οι διακεκομμένες γραμμές. Για περισσότερες πληροφορίες ο ενδιαφερόμενος μπορεί να βρει στα online manual του UNIX ("
man
XSetDashes
").
XSetArcMode( Display* /* display */, GC /* gc */, int /* arc mode */ );Η
XSetArcMode
ορίζει τη μορφή του γεμάτων τόξων. Οι τιμές που μπορεί να
λάβει το τρίτο όρισμα (arc mode) είναι ArcPieSlice
(σαν κομμάτι πίτας) και
ArcChord
(όπως προκύπτει αν ενώσουμε τα άκρα του τόξου με μια χορδή).