Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

RGB colors και Visual Basic

Îåêßíçóå áðü ôï ìÝëïò Michelle. Τελευταία δημοσίευση από το μέλος Michelle στις 14-08-2005, 10:07. Υπάρχουν 36 απαντήσεις.
Σελίδα 1 από 3 (37 εγγραφές)   1 2 3 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-07-2005, 16:04 3469

    RGB colors και Visual Basic

    Θα ήθελα κάποιες πληροφορίες όσον αφορά το πως η vb χειρίζεται τα χρώματα...
    Σε ένα προγραμματάκι που φτιάχνω έχω δημιουργήσει μια μεταβλητή color και όταν ο χρήστης αλλάζει την τιμή του καθε χρώματος Red, green ή blue η μεταβλητή παίρνει την τιμή:
    color = RGB(Val(Red.Text), Val(green.Text), Val(blue.Text))
    Το περίεργο είναι οτι όταν κάνω pause το πρόγραμμά και γράφω στο Immediate print color μου βγάζει κατι περίεργα νούμερα. Αρχίκα νόμιζα οτι όλα ήταν οκ και οτι αυτό το νούμερο ήταν η δεκαδική τιμή του χρώματος σε hex. Έλα όμως που έκανα copy paste το νούμερο στο calculator και σαν δεκαεξαδική τιμη του άσπρου (255,255,255) μου έβγαλε 19FFFF αντί για FFFFFF!
    Τελικά τι συμβαίνει?
    Επίσης έχω ένα τετράγωνο κάπου στη φόρμα που θέλω να παίρνει το χρώμα που έγραψε ο χρήστης στα textboxes αυτά. Έλα όμως που ό,τι μα ό,τι και να γράψω στα κουτάκια αυτό μένει γκρι όπως στην αρχή! Ο κώδικας για το χρώμα του είναι ο εξής:
    selcolor.BackColor = RGB(Val(Red.Text), Val(green.Text), Val(blue.Text))
    Επίσης έχω sliders για το κάθεενα απο τα 3 συστατικά χρώματα με min 0 και max 255 και έχω ρυθμίσει όταν τροποιποιείται το κείμενο να παίρνει την ανάλογη τιμή με τον κάωδικα (πχ για το κόκκινο):
    red_slider.Value = Val(Red.Text)
    αλλά το πολύ να παει μέχρι το 30% του μήκους του ο,τι αριθμό και να βάλω!!
    Όλα αυτά μέσα σε διαδικασίες του στυλ Private Sub Red_Change().
    Η μεταβλητή color είναι global.
    Καμια ιδέα για το τι μπορεί να συμβαίνει?
    Ευχαριστώ.

  •  14-07-2005, 18:01 3471 σε απάντηση της 3469

    Re: RGB colors και Visual Basic

    Συνημμένα: ColorPicker.zip
    Να σου πω ότι το 19FFFF είναι 25, 255, 255. Οπότε μάλλον κάτι δεν έχει ανανεωθεί την ώρα που ενώ βλέπεις σωστά το χρώμα δεν υπολογίζεις σωστά την τιμή του.

    Καλό θα ήταν να μην χρησιμοποιείς την Val για να κάνεις την μετατροπή από κείμενο σε αριθμό. Καλό θα ήταν να χρησιμοποιείς την CInt.

    Σου έχω συννημένο ένα project που έχει ένα colorpicker με sliders και ένα colorpicker με το updown control.

    Για ότι άλλο, εδώ είμαστε... Smile


    George J.

    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  15-07-2005, 05:30 3480 σε απάντηση της 3471

    Re: RGB colors και Visual Basic

    Σε ευχαριστώ πάρα πολύ!!!
    Επειδη αυτό το προγραμματάκι έχει μερικές γραμμές κώδικα που θα σπαζοκεφαλιάσω για να τις σκεφτώ μόνη μου, μου επιτρέπεις να ενσωματώσω κάποια στοιχεία του? Εννοείται οτι θα σε αναφέρω στο About με όποιο τρόπο θες...

    Επίσης μια άλλη ερώτηση αρκετά χαζή (δεν είμαι σίγουρη οτι αξίζει τον κόπο να ανοίξω νέο θέμα γι'αυτη):
    Αν θέλω σε ένα ελεγκτήριο Picture να φορτώνω κατα περίπτωση μια εικόνα πχ. eikona.gif που θα βρίσκεται στον ιδιο φάκελο με το πρόγραμμα, μπορώ σαν path να χρησιμοποιήσω "/eikona.gif" ή "eikona.gif" ή πρέπει να κάνω κάτι άλλο?
    Ναι το ξέρω ότι είναι χαζή ερώτηση αλλά έχω καιρό να ασχοληθώ με vb...Embarrassed

  •  15-07-2005, 05:46 3481 σε απάντηση της 3480

    Re: RGB colors και Visual Basic

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

    Για το πως φορτώνουμε μια εικόνα .gif σε ένα control στην VB6. Στο άρθρο
    Loading and Displaying an Animated GIF without Controls αυτό που σε ενδιαφέρει είναι η ρουτίνα LoadGif()


    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  15-07-2005, 11:27 3486 σε απάντηση της 3481

    Re: RGB colors και Visual Basic

    Όχι όχι δεν εννοούσα αυτο! Το πρόβλημα μου δεν ειναι πως θα φορτώσω ενα animated gif σε ενα ελεγκτηριο εικόνας, για παραδειγμα έφερα αυτο τον τύπο αρχείου, θα μπορούσα να είχα πει και jpg. Το πρόβλημα είναι οτι εφόσον δεν θα ξέρω την ακριβή διαδρομή του φακέλου στον οποίο βρίσκεται το πρόγραμμα μου στον υπολογιστή του χρήστη, τι path θα δώσω στο πρόγραμμα για να το χρησιμοποιήσει?

  •  15-07-2005, 18:30 3501 σε απάντηση της 3486

    Re: RGB colors και Visual Basic

    Η ακριβής διαδρομή της εφαρμογής σου (exe αρχείο), φτιαγμένης σε VB είναι πάντα:

    Dim sApplicationPath As String
       
        sApplicationPath = App.Path & "\" & App.EXEName & ".exe"


    και αντίστοιχα για το dll σου

        sApplicationPath = App.Path & "\" & App.EXEName & ".dll"


    George J.

    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  16-07-2005, 02:46 3512 σε απάντηση της 3501

    Re: RGB colors και Visual Basic

    Δηλαδή για να καταλάβω, η διαδρομή μιας εικόνας στο φάκελο του προγράμματος πχ "eikona.gif" θα είναι
    App.Path & "\" & "eikona.gif" ?

  •  16-07-2005, 07:42 3516 σε απάντηση της 3512

    Re: RGB colors και Visual Basic

    Ναι, πάντα... Smile


    George J.

    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  18-07-2005, 00:19 3563 σε απάντηση της 3469

    Re: RGB colors και Visual Basic

    Ουφφφφ έχω άλλη μια ερώτηση...
    'Εχω κάνει τον εξής κώδικα για να μετατρέπει το ενα δηψήφιο hex σε δεκαδικό αριθμό και όλο μου βγάζει ενα error ByRef type mismatch...
    Private Function hex2num(colorval As String) As Integer
    Dim dig1, dig2 As String
    dig1 = Right(colorval, 1)
    dig2 = Left(colorval, 1)
    hex2num = hexdigf(dig2) * 16 + hexdigf(dig1)
    End Function

    Private Function hexdigf(hexdig As String) As Integer
    Select Case hexdig
    Case "a" Or "A"
    hexdigf = 10
    Case "b" Or "B"
    hexdigf = 11
    Case "c" Or "C"
    hexdigf = 12
    Case "d" Or "D"
    hexdigf = 13
    Case "e" Or "E"
    hexdigf = 14
    Case "f" Or "F"
    hexdigf = 15
    Case Else
    hexdigf = CInt(hexdig)
    End Select
    End Function
    Ουσιαστικά χωρίζω το string του hex σε 3 κομματα με τον κώδικα:
    Private Sub hexvalue_Change()
    Dim redstr, greenstr, bluestr As String
    Dim red, green, blue As Integer
    If Len(hexvalue.Text) = 6 Then
    redstr = Left$(hexvalue.Text, 2)
    greenstr = Left$(hexvalue.Text, 4)
    greenstr = Right$(greenstr, 2)
    bluestr = Right$(hexvalue.Text, 2)
    txtRed.Text = Str$(hex2num(redstr))
    txtgreen.Text = Str$(hex2num(greenstr))
    txtblue.Text = Str$(hex2num(bluestr))
    End If
    End Sub
    Και μετά χρησιμοπιώ τις πάνω συναρτήσεις για να κάνω την κάθε τιμή δεκαδικό αριθμό.
    Καμιά ιδέα τι μπορει να φτάει γιατι σπαζοκεφαλιάζω εδώ και τόση ώρα??

    ΥΓ: Χίλια ευχαριστώ και πάλι για το project που μου έστειλες, με έχεις βοηθήσει απίστευτα!

  •  18-07-2005, 00:55 3564 σε απάντηση της 3563

    Re: RGB colors και Visual Basic

    Για να δούμε:

    Κατ'αρχήν τα
    Dim redstr, greenstr, bluestr As String
    Dim red, green, blue As Integer


    δεν δουλεύουν όπως φαντάζεσαι... από την πρώτη γραμμή, τα redstr και greestr δεν είναι strings είναι variants. Είναι μια από τις πολλές ιδιοτροπίες της VB6 και μπορεί για αυτό να έχεις το πρόβλημα όταν τις περνάς για μεταβλητές τύπου string.
    Το ίδιο και τα red, green είναι variants και όχι intergers. Άρα:
    Dim redstr As String, greenstr As String, bluestr As String
    Dim red As Integer, green As Integer, blue As Integer


    Στη συνέχεια μάλλον και η γραμμή
    greenstr = Left$(hexvalue.Text, 4)

    δεν κάνει αυτό που θα έπρεπε. Θα έπρεπε να παίρνει 2 χαρακτήρες, τον τρίτο και τον τέταρτο. Έτσι όπως είναι γραμμένο παίρνει τους 4 από αριστερά. Αυτό θα έπρεπε να γίνει
    greenstr = Mid$(hexvalue.Text, 3, 2)

    Ένα τρικ για να μετατρέψεις εύκολα ένα αριθμό από hex σε dec:
    Dim Number As Integer
       
    Number = CInt("&h" & HexValueAsString)

    Όταν σε ένα δεκαεξαδικό αριθμό βάλεις το πρόθεμα "&h" και μετά τον κάνεις convert σε δεκαδικό με την CInt() η VB6 καταλαβαίνει ότι είναι δεκαεξαδικός και το κάνει αυτόματα για σένα...


    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  18-07-2005, 01:02 3565 σε απάντηση της 3564

    Re: RGB colors και Visual Basic

    Ευχαριστώ πολυ!!! Το greenstr αν παρατηρήσεις έχει 2 γραμμές για να κάνει αυτό ακριβώς που μου είπες εσύ να κάνω σε μια (δεν θυμόμουν την εντολη).
    Πάντως και πάλι ευχαριστώ, είσαι θυσαυρος! Και απαντάς και πολύ γρήγορα! Με εχεις βοηθήσει απίστευτα! Big Smile

  •  18-07-2005, 13:35 3569 σε απάντηση της 3565

    Re: RGB colors και Visual Basic

    Άλλο πρόβλημα τώρα...(με το ίδιο πρόγραμμα αλλά σε άλλο τμηματάκι του)
    Έχω ένα ελεγκτήριο Picturebox. Θέλω να δημιουργώ μέσα ένα gradient όπως αυτο του κλασίκου επιλογέα χρωμάτων των windows δλδ να πηγαίνει απο κοκκινο σε κίτρινο μετα πράσινο μετά κυανό μετά μπλε μετα ματζέντα και μετά πάλι κόκκινο εν΄'ω ταυτόχρονα κάθετα πηγαίνουν προς γκρι.
    Παιδέυομαι απο τις 8 το πρωί να κάνω μόνο το πρώτο τμήμα (κοκκινό-->κίτρινο) αλλά αυτό το γκρι με έχει παιδέψει απίστευτα...
    Κώδικα δεν παραθέτω γιατι ειναι τόσο μάπα που θα φάω χοντρό κράξιμο... Embarrassed Sad
    Καμιά ιδέα?

  •  18-07-2005, 18:06 3586 σε απάντηση της 3569

    Smile [:)] Re: RGB colors και Visual Basic

    Κάνε copy paste το bitmap με το gradient από οποιοδήποτε πρόγραμμα επεξεργασίας εικόνας και βάλτο σαν resource στο project σου. Μετά με το onclick του mouse πάνω στο bitmap βρες τις συντεταγμένες και κάνε getpixel ή κάτι τέτοιο για να βρεις το χρώμα που έκανε click ο χρήστης. Απλό, μπακάλικο και γρήγορο.
    Χρήστος Γεωργακόπουλος
  •  18-07-2005, 18:14 3588 σε απάντηση της 3586

    Re: RGB colors και Visual Basic

    Στην αρχή αυτό είχα σκοπό να κάνω αλλά τελικά νομίζω οτι ειναι πολύ καλύτερο να το σχεδιάζει αλγοριθμικά.
    Άλλωστε δεν έχει μόνο σημασία ο προορισμός αλλά και η διαδρομή...

  •  18-07-2005, 18:45 3590 σε απάντηση της 3588

    Geeked [8-|] Re: RGB colors και Visual Basic

    Συνημμένα: WindowsApplication1.zip

    Έτσι γίνεται το ταξίδι εδώ....

    But, δεν είναι ακριβώς αυτό που θέλεις, αλλά αρκετά κοντά. Παίζω με HSL μοντέλο το οποίο είναι πιο εύκολα αντιληπτό. Νομίζω ότι το καλύτερο είναι να προσπαθήσεις να μιμηθείς το control του Photoshop που δίνει πραγματικά 3 διαστάσεις (ένα επίπεδο (δύο διαστάσεις) και ένα bar με το Hue (μία διάσταση)). Όλα τα άλλα κάνουν πατέντες για να κάνουν προβολή των τριών διαστάσεων σε δύο.

    Νομίζω ότι ο κώδικας που σου δίνω για το HSL θα σε διευκολύνει πολύ, αν και μάλλον όλος ο κόσμος το κάνει με έτοιμο bitmap, δεν συμφέρει από πλευράς performance να το φτιάχνεις κάθε φορά.


    Χρήστος Γεωργακόπουλος
Σελίδα 1 από 3 (37 εγγραφές)   1 2 3 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems