Χρησιμοποιήστε τα χρώματα του προγράμματός σας στο Visual Studio

Το παράδειγμα αυτό προέκυψε από ένα ερώτημα σε αυτό το άρθρο .

Ο έλεγχος ColorDialog παρουσιάζει μια παραδοσιακή παλέτα χρωμάτων, αλλά η αλήθεια είναι ότι το Visual Studio είναι πολύ καλύτερο και δείχνει όλα τα χρώματα από το όνομα, όπως ορίζεται στα σχεδίου συστημάτων ιδιότητες του αντικειμένου.

Δεδομένου ότι το πρόβλημα δεν υπάρχει κανένας έλεγχος για να μας δείξει αυτή τη λίστα των χρωμάτων μπορούμε να δούμε πώς μπορούμε να constriur τους εαυτούς μας έναν.

Για παράδειγμα, χρειαζόμαστε ένα νέο έργο και δύο μορφές.

Στην πρώτη μορφή ενός σκυτάλη ακριβώς πρέπει να καλέσετε το έντυπο αριθ. 2, όπως φαίνεται στο παρακάτω σχήμα:

coloresNombre001

κουμπί και ο κώδικας έχει ως εξής:

 BtnColor_Click Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές btnColor.Click
 Όπως Νέα Form2 Δημ. vForm2
 vForm2.ShowDialog ()
 Sub End

και σε αυτή τη μορφή θα n botoes λίστας και δύο (δέχεται και να ακυρώσει), όπως στην παρακάτω φόρμα:

coloresNombre002

Σε περίπτωση φόρτωσης της φόρμας θεσπίσει ορισμένες ιδιότητες της λίστας και να φέρουν τα ονόματα των χρωμάτων με τον ακόλουθο κώδικα:

 Form2_Load Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές MyBase.Load
 ListBox1.DrawMode = DrawMode.OwnerDrawFixed
 ListBox1.ItemHeight = 20

 ListBox1.Items.Clear ()
 ListBox1.BeginUpdate ()
 Για κάθε π Όπως Reflection.PropertyInfo Σε gettype (Χρώμα). GetProperties (Ή Reflection.BindingFlags.Static Reflection.BindingFlags.Public)
 ListBox1.Items.Add (pi.Name)
 Επόμενη
 ListBox1.EndUpdate ()
 Sub End

Στην πρώτη γραμμή του φορτίου "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" να αποδείξει ότι όλα τα στοιχεία του ελέγχου που το χέρι και να έχουν το ίδιο ύψος. Αυτό ademças, DrawItem γεγονός προκαλεί μια παράσταση λίγο πριν από κάθε στοιχείο.

Για να ρυθμίσετε την DrawItem περίπτωση λίστας, επιλέξτε (σε προβολή σχεδίασης) η ListBox1, πατάμε το πλήκτρο F4 για να δείτε τις ιδιότητες, και το επάνω μέρος του πλαισίου Ιδιότητες επιλέξτε την αστραπή για να δείτε την περίπτωση κατά την οποία ο έλεγχος είναι διαθέσιμη , έχουμε και εμείς DrawItem διπλό κλικ. Η παρακάτω εικόνα δείχνει πώς:

coloresNombre003

και αυτό είναι ο κωδικός της εκδήλωσης DrawItem

 ListBox1_DrawItem Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.Windows.Forms.DrawItemEventArgs) Λαβές ListBox1.DrawItem
 Δημ. ορθογώνιο Όπως e.Bounds ορθογώνιο =

 Αν (e.State Και DrawItemState.Selected) Στη συνέχεια,
 e.Graphics.FillRectangle (SystemBrushes.Highlight, ορθογώνιο)
 Αλλού
 e.Graphics.FillRectangle (Brushes.White, ορθογώνιο)
 End If

 Δημ. As String = ListBox1.Items nombreColor (e.Index)

 Δημ. β Όπως Νέα SolidBrush (Color.FromName (nombreColor))

 rectangulo.Inflate (-16, -2)
 e.Graphics.FillRectangle (β, Νέα ορθογώνιο (rectangulo.X, rectangulo.Y, 30, rectangulo.Height))

 e.Graphics.DrawRectangle (Pens.Black, Νέα ορθογώνιο (rectangulo.X, rectangulo.Y, 30, rectangulo.Height))

 Αν (e.State Και DrawItemState.Selected) Στη συνέχεια,
 e.Graphics.DrawString (nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2)
 Αλλού
 e.Graphics.DrawString (nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2)
 End If
 Sub End

Τώρα απλά πρέπει να προγραμματίσετε τα κουμπιά eventosde όπως φαίνεται στον παρακάτω κώδικα:

 BtnAceptar_Click Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές btnAceptar.Click
 My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem)
 Sub End

 BtnCancelar_Click Private Sub (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές btnCancelar.Click
 Me.Close ()
 Sub End

Λοιπόν, για να δοκιμάσετε την εφαρμογή ... αν όλα πήγαν καλά, μοιάζει με αυτό:

coloresNombre004

Αφήνω κάποιους ορισμούς:

Graphics.FillRectangle (Μέθοδος): γεμίζει το εσωτερικό του ορθογωνίου που ορίζεται από ένα ζεύγος συντεταγμένων, πλάτος και ύψος.

Graphics.DrawRectangle (Μέθοδος): Σχεδιάστε ένα ορθογώνιο που ορίζεται από ένα ζεύγος συντεταγμένων, πλάτος και ύψος.

Graphics.DrawString (Μέθοδος): Σχεδιάστε την καθορισμένη συμβολοσειρά κειμένου στη συγκεκριμένη θέση και με το πινέλο και καθορίζονται τα αντικείμενα γραμματοσειράς.

Η ελπίδα αυτό βοηθά και μπορείτε να χρησιμοποιήσετε στα έργα σας.

11 απαντήσεις σε "Χρήση Visual Studio χρώματα στο πρόγραμμά σας"

  1. Bitacoras.com λέει:

    Πληροφορίες Bitacoras.com ...

    Τιμή στο Bitacoras.com: Αυτό το παράδειγμα προέκυψε από ένα ερώτημα σε αυτό το άρθρο. Ο έλεγχος ColorDialog tresenta μας μια παραδοσιακή παλέτα χρωμάτων, αλλά είναι tru ε ότι του Visual Studio είναι πολύ καλύτερο και δείχνει όλα τα χρώματα για ν σας .....

  2. Cristyan λέει:

    Πολύ καλό παράδειγμα, σας ευχαριστώ.

  3. Χοσέ Λουίς λέει:

    ΜΕΓΑΛΗ!
    Είναι ευγνώμονες!

  4. Όσκαρ Daniel λέει:

    ! Πολύ καλό!
    το μόνο πράγμα που δούλεψα ήταν το κουμπί ακύρωσης.

  5. Erick λέει:

    αποτυγχάνει να επιλέξετε το διαφανές χρώμα, θα είναι; ........... τα άλλα χρώματα αν λειτουργεί

    salu2

    • Ελισσαιέ λέει:

      είναι ότι το διαφανές χρώμα δεν μπορεί να εφαρμοστεί όπως το χρώμα του φόντου της φόρμας, αλλά εάν εφαρμοστεί σε άλλους ελέγχους.

      Ευχαριστώ για το σχολιασμό!

  6. gercer89 λέει:

    έσωσε τη ζωή μου αυτό το παράδειγμα! ... αλλά έχω να δω την οθόνη prpiedades στο οποίο μπορείτε να αλλάξετε το χρώμα; γιατί μου επιτρέπει να δείτε "My.Forms.Form1.BackColor." ευχαριστεί salu2

  7. diego λέει:

    γειά σου
    Παίρνω ένα λάθος Αναμενόμενη αναγνωριστικό ακριβώς. <Μια Αν (e.State Και DrawItemState. Επιλέξτε ED) Στη συνέχεια,
    e.Graphics.FillRectangle (SystemBrushes.Highlight, ορθογώνιο)

    ΒΟΗΘΗΣΤΕ ΜΕ ΑΠΟ FA
    Graciass

  8. Ο Henry λέει:

    Χαιρετισμοί ...
    Ψάχνω για τεχνικές για να κάνει ένα καλύτερο σχεδιασμό των ελέγχων που πρέπει να είναι, όπως το αεροδρόμιο, αλλά δεν έχω ιδέα ούτε μπορώ να βρω κάτι παρακαλώ αν μπορούσε να με βοηθήσει με αυτό της anetmano σας ευχαριστώ πολύ ...

  9. David λέει:

    ΒΕΡΑ αυτό, σας ευχαριστώ πολύ για αυτό το παράδειγμα. Θα είμαι σε θέση να την εφαρμόσει στις ανάγκες μου

    Σας ευχαριστώ από Merida, Yucatan

Σχόλιο