Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω ορισμενες ερωτησεις για το WPF

 

1. Πως μπορω σε C# & WPF να εχω καποια αντικειμενα πανω στη φορμα και οταν η φορμα μεγαλωνει ή μικραινει να μεγαλωνουν και να μικραινουν τα αντικειμενα αναλογα; (οπως συμβαινει με τα τραπουλοχαρτα της πασιεντζας των windows vista & 7). Μηπως υπαρχει δυνατοτητα να γινει και με WinForms; (νομιζω πως οχι)

 

2. Ενας που εχει εμπειρια σε WinForms ειναι δυσκολο να μεταβει σε WPF; Εχουν πολλα κοινα ή οι διαφορες τους ειναι τεραστιες;

 

3. Η Java και το Builder C++ εχουν κατι αναλογο με το WPF του Visual Studio;

 

Ευχαριστω

 

Δημοσ.

1. Πως μπορω σε C# & WPF να εχω καποια αντικειμενα πανω στη φορμα και οταν η φορμα μεγαλωνει ή μικραινει να μεγαλωνουν και να μικραινουν τα αντικειμενα αναλογα; (οπως συμβαινει με τα τραπουλοχαρτα της πασιεντζας των windows vista & 7). Μηπως υπαρχει δυνατοτητα να γινει και με WinForms; (νομιζω πως οχι)

 

Στήνοντας το κατάλληλο layout και δίνοντας τα κατάλληλα property values στα controls που θα δημιουργηθούν. Δε μπορώ να γίνω πιο συγκεκριμένος μιλώντας στον αέρα.

 

Αν π.χ. έχεις ένα οριζόντιο StackPanel για τις κάρτες θα βάλεις VerticalContentAlignment="Stretch".

 

WPF + WinForms = don't go there. Γίνεται αλλά μη το κάνεις στον εαυτό σου.

 

2. Ενας που εχει εμπειρια σε WinForms ειναι δυσκολο να μεταβει σε WPF; Εχουν πολλα κοινα ή οι διαφορες τους ειναι τεραστιες;

 

Ψιλο καμία σχέση. Απλά και το ένα και το άλλο έχει controls και κάποιες έννοιες που πηγάζουν από τα θεμελιώδη των Windows (π.χ. πότε χρειάζεται να κάνεις Invoke) εμφανίζονται και στα 2 (ενδεχομένως με άλλο όνομα).

 

3. Η Java και το Builder C++ εχουν κατι αναλογο με το WPF του Visual Studio;

 

Εξαρτάται από το τι εννοείς "ανάλογο". Όπως το αντιλαμβάνομαι εγώ δεν έχουν.

Δημοσ.

 

Εξαρτάται από το τι εννοείς "ανάλογο". Όπως το αντιλαμβάνομαι εγώ δεν έχουν.

 

Εννοω αν εχουν οι Java & Builder C++ αντιστοιχες δυνατοτητες με το WPF του Visual Studio οσον αφορα αναπτυξη εφαρμογων windows. Αν δεν εχουν τοτε προφανως C# + WPF υπερτερει εναντι Java & Builder C++ στην αναπτυξη εφαρμογων windows.

 

thanks για τις απαντησεις.

Δημοσ.

Κοιτα, σιγουρα το WPF υπερτερει απ'ολα τα gui frameworks, αλλα για καποιο λογο τα επαγγελματικα προγραμματα γραφονται ακομα σε winapi ή mfc. Ισως ειναι νωρις ακομα για το WPF. Δηλαδη το μονο προγραμμα που εχω δει που ειναι σε WPF ειναι το vs10, ενω προγραμματα που εχουν ξεφυγει απο θεμα GUI σα το tradestation2 ειναι γραμμενα σε mfc.

Δημοσ.

Εχω ορισμενες ερωτησεις για το WPF

 

1. Πως μπορω σε C# & WPF να εχω καποια αντικειμενα πανω στη φορμα και οταν η φορμα μεγαλωνει ή μικραινει να μεγαλωνουν και να μικραινουν τα αντικειμενα αναλογα; (οπως συμβαινει με τα τραπουλοχαρτα της πασιεντζας των windows vista & 7). Μηπως υπαρχει δυνατοτητα να γινει και με WinForms; (νομιζω πως οχι)

 

2. Ενας που εχει εμπειρια σε WinForms ειναι δυσκολο να μεταβει σε WPF; Εχουν πολλα κοινα ή οι διαφορες τους ειναι τεραστιες;

 

3. Η Java και το Builder C++ εχουν κατι αναλογο με το WPF του Visual Studio;

 

Ευχαριστω

 

1. Κατάλληλο layout και properties.

 

2. Όχι, καθόλου δύσκολο, αν κατανοείς πως δουλεύει η HTML/ASP. Φαντάσου την XAML ως μια καλύτερη asp.net που μπορείς πάρα πολύ εύκολα να κάνεις αυτά που σε προβλημάτιζαν στην asp.net :)

 

3. Αν θες να κάνεις κάτι καλό και εύκολο με το WPF, ιδίως του να σχεδιάσεις από το IDE, χρησιμοποίησε Expression Blend. 

Δημοσ.

Κοιτα, σιγουρα το WPF υπερτερει απ'ολα τα gui frameworks, αλλα για καποιο λογο τα επαγγελματικα προγραμματα γραφονται ακομα σε winapi ή mfc. Ισως ειναι νωρις ακομα για το WPF. Δηλαδη το μονο προγραμμα που εχω δει που ειναι σε WPF ειναι το vs10, ενω προγραμματα που εχουν ξεφυγει απο θεμα GUI σα το tradestation2 ειναι γραμμενα σε mfc.

 

Εμενα γιατι μου φαινεται οτι η πασιεντζα των windows vista & 7 ειναι σε WPF;

Δημοσ.

Τι σχεση εχει αυτο; Εγω σου λεω οτι αλλα προγραμματα (μη microsoft) δεν υιοθετουν ατη την τεχνολογια. Δεν σου λεω να μην ασχοληθεις με WPF, απλα σου λεω το τι βλεπουν τα ματακια μου.

Δημοσ.

Τι σχεση εχει αυτο; Εγω σου λεω οτι αλλα προγραμματα (μη microsoft) δεν υιοθετουν ατη την τεχνολογια. Δεν σου λεω να μην ασχοληθεις με WPF, απλα σου λεω το τι βλεπουν τα ματακια μου.

 

OK. Ποσο ευκολο ειναι να γινει αυτο που ρωταω στο πρωτο ποστ στο ερωτημα #1 χωρις WPF; (π.χ. mfc)

Δημοσ.

OK. Ποσο ευκολο ειναι να γινει αυτο που ρωταω στο πρωτο ποστ στο ερωτημα #1 χωρις WPF; (π.χ. mfc)

 

Π.χ σε WinForms πανεύκολα

Στα πιο πολλά controls υπάρχουν τα property  Link.png Site: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.anchor.aspx">Anchor  και Link.png Site: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx">Dock  που σε βολεύουν πολύ.

Και τo Link.png Site: http://msdn.microsoft.com/en-us/library/system.windows.forms.splitcontainer.aspx">SplitContainer για περισσότερο έλεγχο

 

 

Εδιτ.

Νομίζω θες να αλλάζουν αναλογικά.

Μια μέθοδος είναι να υπολογίζεις το Location και Size του κάθε control στο Resize event της φόρμας.

 

Δες και τα properties AutoSize και AutoSizeMode της φόρμας.

Δημοσ.

Απο την μία ο OP λέει για πασιέντζα, από την άλλη για winforms. Ακόμα δεν έχουμε καταλάβει τί θέλει να κάνει.....

 

Θελω να κανω αυτο που λεω στο πρωτο ποστ.

Δεν θελω να υπολογιζω το Location και Size του καθε control στο Resize event της φόρμας οπως λεει ο albNik αλλα να ορισω απο τα properties του καθε control οτι θα μεγαλωνει και θα μικραινει αναλογικα αναλογα με το μεγεθος της φορμας (εδωσα το παραδειγμα της πασιεντζας). Ή να ορισω απο τα properties της φορμας οτι οποιοδηποτε control βρισκεται πανω της θα θα μεγαλωνει και θα μικραινει αναλογικα αναλογα με το μεγεθος της φορμας.

Δημοσ.

Για το Location και Size δεν χρειάζεται να απευθύνεσαι σε κάθε control χωριστά.

Αν έχεις μια φόρμα , που έχει ένα πάνελ και το πάνελ έχει ένα button, τότε το button είναι control του πάνελ και όχι της φόρμας.

 

Μια αναδρομική συνάρτηση αρκεί.

 

        float ratio = 1;
        void AutoResize(Control c)
        {
            foreach(Control item in c.Controls)
            {
                item.Location = new Point((int)(item.Location.X * ratio), (int)(item.Location.Y * ratio));
                //   item.Size= ...

                AutoResize(item);
            }
        }

        private void Form_Resize(object sender, EventArgs e)
        {
            updateRatio();
            AutoResize(this);
        }
Δημοσ.

 

Για το Location και Size δεν χρειάζεται να απευθύνεσαι σε κάθε control χωριστά.

Αν έχεις μια φόρμα , που έχει ένα πάνελ και το πάνελ έχει ένα button, τότε το button είναι control του πάνελ και όχι της φόρμας.

 

Μια αναδρομική συνάρτηση αρκεί.

 

        float ratio = 1;
        void AutoResize(Control c)
        {
            foreach(Control item in c.Controls)
            {
                item.Location = new Point((int)(item.Location.X * ratio), (int)(item.Location.Y * ratio));
                //   item.Size= ...

                AutoResize(item);
            }
        }

        private void Form_Resize(object sender, EventArgs e)
        {
            updateRatio();
            AutoResize(this);
        }

 

Ωραιο αλλα λειπει ο κωδικος για την updateRatio();

Δημοσ.

Χεχε ... τελικά ίσως γίνει λίγο πιο περίπλοκο.

 

Αρχικά αμέσως μετά την InitializeComponent()  βάζεις αναδρομικά σε κάθε control στο Tag του το αρχικό Bounds.

c.Tag=c.Bounds;

 

To ratio θα γίνεται (updateRatio) κάθε φορά ο λόγος της αρχικής τιμής του Χ (η Y η με κάποιο δικό κριτήριο) της φόρμας προς το τρέχων.

 

 

Στην AutoResize θα βάλεις

Rectangle init = (Rectangle)item.Tag;
item.Location = new Point((int)(init.X * ratio), (int)(init.Y * ratio));
item.Size = new Size((int)(init.Width * ratio), (int)(init.Height * ratio));

Μπορείς να έχεις ratioX και ratioY ξεχωριστά.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...