Page 1 of 1

Σχεδιασμός GUI και Γραφικών

Posted: Fri Oct 13, 2006 1:59 am
by Fairy
Εκτός από τα κλασσικά πλέον στη σχολή μας awt και swing της Java, αναρωτιέμαι ποιες άλλες γλώσσες παρέχουν όμοια "εργαλεία" και τυγχάνει να είναι δημοφιλή στις μέρες μας. Σας έχει τύχει να χρησιμοποιήσετε κάτι για εφαρμογές;

Για παράδειγμα είμαι σίγουρη πως υπάρχει κάτι ανάλογο στη C++ μιας και χρησιμοποιούμε πλέον τα Windows νυχθημερόν, αλλά δεν έχω καταφέρει προς το παρόν να βρω κάποιο manual για αρχαρίους (με Java τα πάω αρκετά καλά). Έχετε κάτι υπόψιν σας;

Και τέλος, τι άλλες γλώσσες έχουν ανάλογες δυνατότητες; Για παράδειγμα, σε κάποιο άλλο topic o AmmarkoV έχει φτιάξει μια πολύ όμορφη εφαρμογή Sudoku με FreePascal.

Να διευκρινήσω ότι προς το παρόν δεν ψάχνω κάποια έτοιμη εφαρμογή όπου κάνεις drag and drop έτοιμα components όπως κουμπιά κτλ. Θέλω να ψηθώ λίγο προγραμματιστικά.

Ευχαριστώ για τη βοήθεια! :smt006

Re: Σχεδιασμός GUI και Γραφικών

Posted: Fri Oct 13, 2006 8:50 am
by Erevodifwntas
Fairy wrote:Να διευκρινήσω ότι προς το παρόν δεν ψάχνω κάποια έτοιμη εφαρμογή όπου κάνεις drag and drop έτοιμα components όπως κουμπιά κτλ. Θέλω να ψηθώ λίγο προγραμματιστικά.
ΑΥτό δεν είναι ψήσιμο είναι κάψιμο.... Έχοντας κάνει προγραμματική σχεδίαση interface με AWT θέλεις να συνεχίσεις??? OK... γούστα είναι αυτά... προσωπικά έχω χρησιμοποιήσει το win32 SDK (για GUIs με C++ και windows). Επίσης υπάρχει το MFC (για τον ίδιο λόγο), αλλά ποτέ δεν το συμπάθησα. φυσικά πάντα μπορείς όλα αυτα να τα κάνεις και με DirectX και να δημιουργήσεις τα πάντα μόνη σου.... Πάντως το GUI είναι πολύ σημαντικό μέρος μιας εφαρμογής και προγραματιστικά τετριμμένο. Δεν αξίζει να το φτιάχνεις με το χέρι (Αφού ξανά και ξανά θα κάνεις τα ίδια πράγματα, και με πολύ περισσότερη κούραση, χωρίς να μπορείς να αυτενεργήσεις ιδιαίτερα -όλα τα κουμπιά, τα textboxes κ.τ.λπ. φτιάχνονται με τον ίδιο τρόπο). Καλύτερα να ρίξεις περισσότερο χρόνο στο σχεδιασμό (κι όχι στον προγραμματισμό) του GUI και την καλύτερη υλοποίηση των αλγορίθμων στο background της εφαρμογής, παρά να αναλωθείς στο να φτιάξεις ένα GUI που θα είναι ισάξιο ενός φτιαχμένου με drag and drop.

Posted: Fri Oct 13, 2006 11:04 am
by PaP
Για C++ υπάρχει η Visual C++ και άλλες βιβλιοθήκες για δημιουργία GUI όπως Qt, GTK που είναι cross-platform τα βασικότερα όμως πλέον είναι Swing, C# και VB.net κατά την άποψη μου το καλύτερο GUI είναι το web οπότε καλύψου με swing και μάθε τέλεια HTML, DHTML, CSS, AJAX

Posted: Fri Oct 13, 2006 11:53 am
by tsilochr
Απλά να επισημάνω την ευκολία που παρέχουν οι C# και VB.NET μιας και το Visual Studio μας παρέχεται δωρεάν.

Ο pap έχει δίκιο όμως, όλο και πιο πολύ τα πληροφοριακά συστήματα οδηγούνται σε database-driven web applications οπότε θα σου χρειαστούν οι επεκτάσεις της HTML.

Φυσικά υπάρχει και η επιλογή να το γυρίσεις σε system analyst / engineer για να μην ασχολείσαι με κουμπάκια και στοίχιση γραμμών :???:

Posted: Fri Oct 13, 2006 12:05 pm
by PaP
GUI development -> πιο ανθρώπινο....

Posted: Fri Oct 13, 2006 11:10 pm
by silegav
Άλλη μια σύμφων η γνώμη με αυτή του PaP...Web is ahead.
Οι standalone εφαρμογές δείχνουν να φθίνουν. Αν το παρατηρήσεις, το google έχει αρχίσει να μεταφέρει ολόκληρο το Pc πλην του λειτουργικού σε Web περιβάλλον. Δεν νομίζω ότι αρμενίζουν στραβα! :-)

Αν επιμένεις να κάνεΙς GUI, δεν θα το συνιστούσα να καείς με τον τυποποιημένο κώδικα κατασκευής κουμπιών και textboxes. Δεν είναι πραγματικός προγραμματισμός αυτό, είναι τυποποιημένη δουλεία, δεν θα σου προσφέρει κάτι.

Προγραμματιστικό ψήσιμο θα ήταν η βελτιστοποίηση αλγορίθμων και η υλοποίηση κάποιων από αυτούς. Εκεί ναι! και γνώση παρέχεις και αποκτάς και μαθαίνεις πολλά για την γλώσσα στην οποία προγραμματίζεις.

Posted: Sat Oct 14, 2006 2:16 am
by AnINffected
Δική μου άποψη είναι, αν νοιώθεις οτί χρειάζεσαι μια νεα εμπειρία, να ρίξεις μία ματιά στον κώδικα κατασκευής GUIs, να δείς πώς είναι, αλλά και εγώ πιστεύω πως δε χρειάζεται να τα μάθεις στην εντέλεια (ούτε εγώ ξέρω τπτ το ιδιαίτερο από GUI coding βασικά).
Ειδικά ο προγραμματισμός σε Win32, όταν είχα δοκιμάσει (ήμουν και δευτεροετής βέβαια), μου είχε φανεί πολύ κουραστικός και δυσνόητος, έγραφες σελίδα ολόκληρη για ένα κενό παράθυρο.
Τώρα, με τις MFC δεν ξέρω πως είναι, δεν έχω δοκιμάσει.

Κατα τ'άλλα συμφωνώ με όλους τους προλαλήσαντες, και σε αυτό που λέει στο τέλος ο silegav για την βελτίωση/υλοποίηση αλγορίθμων.

Posted: Sat Oct 14, 2006 12:17 pm
by AmmarkoV
Warning Μεγάλο Post..
Fairy wrote:Για παράδειγμα είμαι σίγουρη πως υπάρχει κάτι ανάλογο στη C++ μιας και χρησιμοποιούμε πλέον τα Windows νυχθημερόν, αλλά δεν έχω καταφέρει προς το παρόν να βρω κάποιο manual για αρχαρίους (με Java τα πάω αρκετά καλά). Έχετε κάτι υπόψιν σας;
σε κάποιο άλλο topic ... Sudoku με FreePascal

Το GUI που είδες Fairy το έχω ξεκινήσει στην 3η λυκείου σαν Project..
(Ελεϊνό όταν το πρωτοξεκίνησα , αλλά βελτιώνεται)

Γενικότερα τα προγράμματα τα οποία είναι User-Oriented τα γράφω σε FreePascal (Delphi compatible , open source).
Γιατί ?
Απλούστατο συντακτικό..
Εύκολη συντήρηση..

Βέβαια θα μου πείς στην σχολή δεν έχουμε κάνει FreePascal..?
Θα απαντήσω κακώς , και τι πάει να πεί αυτό..

Άλλη κοινή ερώτηση .. Pascal , αυτή δεν είναι παλιά γλώσσα που παίζει μόνο σε dosbased κονσόλα..?
Ναι , πολλοί την μπερδεύουν με την Turbo Pascal της Borland , δεν έχει όμως καμμία μα καμμία σχέση εκτός του οτι οι εντολές είναι "Pascal"..

Και ωραία γιατί να την χρησιμοποιήσεις ? Αφού αυτά που φτιάχνεις παίζουν μόνο σε Windows.. Λάθος.. υποστηρίζονται Linux, FreeBSD, Mac OS X/Darwin, Mac OS classic, DOS, Win32, OS/2, Netware (libc and classic) , MorphOS.

Τώρα σχετικά με την πολυπλοκότητα του όλου πράγματος..
Τα Apps μου βασίζονται σε 3 βιβλιοθήκες η μία αναλαμβάνει το drawing στην οθόνη και ουσιαστικά κάνει register το παράθυρο μπορεί να ζωγραφίζει γραμμές , pixels , primitives γενικότερα.. Οπότε αφού το έγραψα αυτό δεν χρειάζεται άλλη μια γραμμή για Win32..
Τώρα πάνω σε αυτήν υπάρχει ένα άλλο "Unit/Βιβλιοθήκη" που αναλαμβάνει κωδικοποίηση αποκωδικοποίηση BMP , JPG , ICO , CUR , APS αρχείων..
Τώρα πάνω στα 2 παραπάνω υπάρχει το GUI το οποίο τελικά είναι κάπως απομακρυσμένο από τα Windows.. Θεωρητικά δηλαδή αν έκανα port την βιβλιοθήκη των γραφικών θα έπαιζε κατευθείαν σε οποιαδήποτε πλατφόρμα..

Σαν GUI η αρχιτεκτονική του είναι οτι τα πάντα στην οθόνη είναι objects τα οποία προσθέτουμε.. Επίσης παρ`όλα αυτά είναι procedural και όχι object oriented το μοντέλο του..

Στόχοι του ήταν και είναι..
Να υποστηρίζει Ελληνικά ακόμα και αν δεν τα υποστηρίζει ο υπολογιστής ;)
Να είναι γρήγορο.. (worst test case P75MHz 16MB RAM , Win98)
Nα είναι όμορφο και skinable..
Να είναι προγραμματιστικά "εύκολο" (παρ`ότι φτιάχνω Visual μέθοδο για να βγάζει τον κώδικα , όλα τα μέχρι τώρα προγραμματάκια είναι γραμμένα σε καθαρό κώδικα,καμμία εποπτική μέθοδος)
Να έχει features όπως γρήγορη πληκτρολόγηση , ορθογραφικό έλεγχο και άλλα automatations τα οποία όμως είναι σε δοκιμαστική κατάσταση και γι`αυτό απενεργοποιημένα..
Γενικότερα το ποιό σημαντικό , να μπορώ να κάνω ότι μου καπνίσει με αυτό..
Fairy wrote:Και τέλος, τι άλλες γλώσσες έχουν ανάλογες δυνατότητες;
Με όλες τις γλώσσες που προσφέρουν κάποια δίοδο στο Win32API μπορείς θεωρητικά να φτιάξεις το δικό σου GUI..
Συγκεκριμένα για την FreePascal και την δικιά μου εμπειρία πάντως να σου πώ οτι documentation υπάρχει κυρίως για C++ άντε σε κάποιες περιπτώσεις και για Delphi.. Οπότε υπάρχει το θέμα της μετάφρασης , το οποίο όμως και συνήθίζεται.. :)
Fairy wrote:Θέλω να ψηθώ λίγο προγραμματιστικά.
Ειλικρινά πιστεύω πως θα σε ενδιαφέρει τότε γιατί μαθαίνεις άπειρα πράματα για τα οποία δεν ενδιαφέρεται κανείς , γιατί τα παίρνουν έτοιμα.. Η γνώση όμως είναι δύναμη..
Μαθαίνεις πως δουλεύει από πιο μέσα το πράμα.. Και μπορείς να το βελτιώσεις αναλόγως ;)

Τέλος σχετικά με τον κώδικα να σου δώσω ένα αποσπασματάκι σχετικά με το πως είναι οργανωμένος και τι κάνει..
Επίσης δεν χρειάζεται γνώση Win32API ούτε επαναλαμβάνονται πράματα..
Το αντίθετο θα έλεγα :-D
ammarGUI code wrote: InitGraph('Hello World',640,480,0); // Ανοίγει το παράθυρο για γραφικά σε μέγεθος 640x480
loadskin(''); //Φορτώνει το skin

include_object('backwindow','window','ASudoku '+version,'','','',1,1,640,480); // Φτιάχνει ένα Window που λέει πάνω ASudoku version τάδε.. και που πιάνει από το 1,1 έως το 640,480
include_object('this_level','comment','Playing Game '+playing_game,'','','',50,50,0,0); // Βάζει ένα κειμενάκι που λέει Playing game τάδε στην θέση 50,50
include_object('exit','buttonc','Exit ASudoku','','','',X1(last_object),GetMaxY-100,0,0); // Φτιάχνει ένα κουμπί με συντεταγμένη x την θέση που ξεκινάει το τελευταίο object που προστέθηκε
για να είναι ευθυγραμμισμένα και Y 100 pixels πριν το τέλος του παραθύρου..

draw_all; //Ζωγραφίζει αυτά που φτιάξαμε..

repeat
interact; // Επεξεργαζόμαστε το input του user

// κώδικας controls κτλ εδώ

until GUI_Exit; // μέχρι ο user να κλείσει το παράθυρο ή να πατήσει Exit


CloseGraph;// Κλείνει το Graph

Posted: Sat Oct 14, 2006 4:46 pm
by Fairy
Ευχαριστώ όλους σας ξεχωριστά για τις απαντήσεις και ειδικά εσένα AmmarkoV για την καλή διάθεση να παραθέσεις τη λογική πίσω από τον κώδικά σου.
AmmarkoV wrote:Ειλικρινά πιστεύω πως θα σε ενδιαφέρει τότε γιατί μαθαίνεις άπειρα πράματα για τα οποία δεν ενδιαφέρεται κανείς , γιατί τα παίρνουν έτοιμα.. Η γνώση όμως είναι δύναμη..
Μαθαίνεις πως δουλεύει από πιο μέσα το πράμα.. Και μπορείς να το βελτιώσεις αναλόγως
Πραγματικά και εγώ το πιστεύω αυτό γι' αυτό είπα να προβληματιστώ λίγο περισσότερο πάνω στο θέμα. Ακόμη και τα GUI στο μάθημα της Java 2 που ήταν σκέτο βάσανο και η χαρά του copy - paste διασκέδασα όταν τα έκανα, κι ας μην έχουν πρακτική αξία όταν είσαι στον επαγγελματικό σου χώρο και βιάζεσαι να παραδώσεις project σε λίγες μέρες. Ας πούμε πως βλέπω τα GUI λίγο σαν χόμπυ (ελπίζω να μη σημαίνει πως έχω τάσεις μαζοχισμού, απλά ο σχεδιασμός GUI είναι και λίγο καλλιτεχνική ενασχόληση εκτός από επάγγελμα). Υποθέτω φέτος στα Δικτυα που κάνουμε προγραμματισμό στο web να γίνει ακόμη πιο ενδιαφέρον το ζήτημα!

Όσο για την ενασχόληση με τα GUI και την κατασκευή εφαρμογών η περιέργειά μου ξεκίνησε από μαθήματα τις σχολής όπως οι προγραμματιστικές ασκήσεις των αλγορίθμων και τα project της Τεχνητής Νοημοσύνης που θα δω σε αυτό το εξάμηνο... Είπα να αρχίσω να μπαίνω στο κλίμα από τώρα που έχω λίγο χρόνο. Στα συγκεριμένα μαθήματα η Java είναι μονόδρομος; Κι αν τα κάνω με προγραμματάκι που φτιάχνει έτοιμα components ποιο μου προτείνετε να ψάξω για εξάσκηση; (Αν υπάρχει και στο εργαστήριο ακόμη καλύτερα...)

Posted: Sat Oct 14, 2006 7:21 pm
by Erevodifwntas
Fairy wrote:Ας πούμε πως βλέπω τα GUI λίγο σαν χόμπυ (ελπίζω να μη σημαίνει πως έχω τάσεις μαζοχισμού, απλά ο σχεδιασμός GUI είναι και λίγο καλλιτεχνική ενασχόληση εκτός από επάγγελμα).
... έχεις φτιάξει (προγραμματιστικά) GUI σε Java και σου άρεσε? αν ναι... τότε... μάλλον τείνεις προς το άθλημα... πάντως και μόνη σου το είπες Απλό copy paste έκανες και όλα λειτούργησαν. Προφανώς και κάτσε και μάθε πώς λειτουργούν (αν είδες όλοι μας έχουμε ασχοληθεί με κάτι), αλλά δε χρειάζεται να το κάνεις και συνήθεια (αφού μάθαμε πώς να το κάνουμε, οι περισσότεροι σταματήσαμε να ασχολούμαστε και ρίξαμε το βάρος στους αλγορίθμους από πίσω -φυσικά πάντα υπάρχει και το DirectX... μην το ξεχνάς).
Fairy wrote:Υποθέτω φέτος στα Δικτυα που κάνουμε προγραμματισμό στο web να γίνει ακόμη πιο ενδιαφέρον το ζήτημα!
Περισσότερο ελπίδα είναι... μη φανταστείς κάτι τρομερό... το Γατούλη θα μάθετε και τον κ. Λιονταράκη (έτσι δεν τον έλεγαν?)
Fairy wrote: Όσο για την ενασχόληση με τα GUI και την κατασκευή εφαρμογών η περιέργειά μου ξεκίνησε από μαθήματα τις σχολής όπως οι προγραμματιστικές ασκήσεις των αλγορίθμων και τα project της Τεχνητής Νοημοσύνης που θα δω σε αυτό το εξάμηνο... Είπα να αρχίσω να μπαίνω στο κλίμα από τώρα που έχω λίγο χρόνο. Στα συγκεριμένα μαθήματα η Java είναι μονόδρομος; Κι αν τα κάνω με προγραμματάκι που φτιάχνει έτοιμα components ποιο μου προτείνετε να ψάξω για εξάσκηση; (Αν υπάρχει και στο εργαστήριο ακόμη καλύτερα...)
Είπες τις μαγικές λέξεις Τεχνητή Νοημοσύνη.... το καλύτερο μάθημα του προπτυχιακού με το καλύτερο βιβλίο (μετά του Tanenbaum). Οι ασκήσεις είναι απλά ΤΕΛΕΙΕΣ!!! ότι καλύτερο θα κάνεις στο προπτυχιακό (μαζί με τα πολυμέσα). Οχι η Java δεν είναι μονόδρομος. Στα χρόνια μου, την είχα κάνει σε C++ ενώ φίλοι μου σε C# (ίσως κάποιοι να είχαν ασχοληθεί και με J#, αλλά νομίζω ότι αυτή η διαστροφή τους πέτυχε στο επόμενο έτος -σωστά tec-goblin?)

Posted: Sat Oct 14, 2006 11:22 pm
by AmmarkoV
Fairy wrote:Ας πούμε πως βλέπω τα GUI λίγο σαν χόμπυ (ελπίζω να μη σημαίνει πως έχω τάσεις μαζοχισμού, απλά ο σχεδιασμός GUI είναι και λίγο καλλιτεχνική ενασχόληση εκτός από επάγγελμα).
Fairy++

Fairy wrote:Ευχαριστώ όλους .. .. τον κώδικά σου.
Έχω πολύ πολύ κώδικα , αν θέλεις πράγματα πάνω σε picture files , Win32API κτλ pm me..
Erevodifwntas wrote:φυσικά πάντα υπάρχει και το DirectX
Αυτό θα είναι (θέλω τουλάχιστον) και το επόμενο στάδιο για μένα , αυτό ή OpenGL (απευθείας port σε Linux) . Βέβαια υπάρχουν 2 ή μάλλον 3 πράγματα που με κρατάνε προς το παρόν..
1) χρόνος
2) το γεγονός οτι χρησιμοποίωντας την κάρτα γραφικών δουλεύει το Fan του Laptop μου και γενικότερα καταναλώνει περισσότερη μπαταρία ,ενώ ανεβαίνουν οι απαιτήσεις του συστήματος που τρέχει το GUI.. (Που είναι πολύ μείον)
3) το γεγονός οτι με το Graphics Foundation των Windows Vista GDI/GDI+ και DirectX γίνονται ένα πράμα και άρα γιατί να κάνω μια μεταφορά που δεν χρειάζεται! :) (να και ένα από τα καλά που θα έχουν τα Vista)
Erevodifwntas wrote:Είπες τις μαγικές λέξεις Τεχνητή Νοημοσύνη
Looking forward..
Εγώ σκέφτομαι να φτιάξω την μηχανή του πράματος σε C++ dll και το User-Interface σε FreePascal :-D

Posted: Sun Oct 15, 2006 1:34 am
by Fairy
Erevodifwntas wrote: Περισσότερο ελπίδα είναι... μη φανταστείς κάτι τρομερό... το Γατούλη θα μάθετε και τον κ. Λιονταράκη (έτσι δεν τον έλεγαν?)
Έλα Θεέ μου!!! :cat:

Posted: Sun Oct 15, 2006 2:08 am
by ciao
Fairy wrote:
Erevodifwntas wrote: Περισσότερο ελπίδα είναι... μη φανταστείς κάτι τρομερό... το Γατούλη θα μάθετε και τον κ. Λιονταράκη (έτσι δεν τον έλεγαν?)
Έλα Θεέ μου!!! :cat:
Και όμως αλήθεια είναι!!!

Posted: Sun Oct 15, 2006 3:22 am
by AnINffected
Erevodifwntas wrote:Περισσότερο ελπίδα είναι... μη φανταστείς κάτι τρομερό... το Γατούλη θα μάθετε και τον κ. Λιονταράκη (έτσι δεν τον έλεγαν?)
:smt046 :smt046 Θεϊκό!

Erevodifwntas wrote:Είπες τις μαγικές λέξεις Τεχνητή Νοημοσύνη
[offtopic]Αααχ, μαγεία!Είναι ο αγαπημένος μου τομέας, και με το εν λόγω βιβλίο είμαι ερωτευμένος![/offtopic]

Πάντως Fairy φαίνεται οτί έχεις πάθος μέσα σου... Βγάλ'το προς τα έξω! :smt023

Και έχε υπ'όψην σου οτί η δική μου γνώμη βαραίνει λιγότερο απ'ότι των υπολοίπων, γιατί όπως προανέφερα δεν έχω πολυασχοληθεί με τα συγκεκριμένα θέματα (έλλειψη χρόνου).

Posted: Sun Oct 15, 2006 6:48 am
by AmmarkoV
Fairy wrote:Πάντως Fairy φαίνεται οτί έχεις πάθος μέσα σου... Βγάλ'το προς τα έξω!
The force is strong with this one..
Image