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

 

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

Διαφανής σχεδίαση. Με PictureBox;

Îåêßíçóå áðü ôï ìÝëïò pantelee. Τελευταία δημοσίευση από το μέλος raPhaeL στις 19-12-2005, 14:24. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-12-2005, 20:41 8012

    Confused [*-)] Διαφανής σχεδίαση. Με PictureBox;

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

    Παρατηρώ πως το ελεγκτήριο Image υποστηρίζει διαφανή αρχεία gif αλλά δε μου επιτρέπει να σχεδιάσω και το ελεγκτήριο PictureBox μου επιτρέπει να σχεδιάσω αλλά δεν υποστηρίζει διαφανή σχεδίαση. Ή μήπως κάνω λάθος; Και δοκίμασα να σχεδιάσω σε PictureBox και μετά να μεταφέρω το σχέδιο σε Image και πάλι μου μετέφερε και το αδιαφανές φόντο.

    Να σημειώσω πως σχεδιάζω με την εντολή Pset, γνωρίζω πως υπάρχουν και εντολές Line, Circle, PaintPicture αλλά απ' όσο γνωρίζω βρίσκουν εφαρμογή μόνο στο ελεγκτήριο PictureBox (το οποίο όπως είπα δεν υποστηρίζει διαφανή σχεδίαση).

    Τελικά είναι κάτι με το PictureBox ή με το Image που μου διαφεύγει ή πρέπει να καταφύγω σε άλλα ελεγκτήρια;

    Ευχαριστώ
  •  16-12-2005, 11:31 8031 σε απάντηση της 8012

    Απ: Διαφανής σχεδίαση. Με PictureBox;

    Συνημμένα: Transparency.rar

    Καλώς ήλθες καταρχήν στο dotnetzone.gr.

    Δες το attached project. Στην αρχή δηλώνεις το διάφανο χρώμα , μετά αν θες ζωγραφίζεις πάνω στο Picturebox ή φορτώνεις μια εικόνα σε αυτό. Τέλος πατάς το κουμπί “Blit to Destination” το οποίο σου μεταφέρει το πάνω Picture Box στο κάτω χρησιμοποιώντας το διάφανο χρώμα που έχεις δηλώσει.Την δουλεία τελικά την κάνει ένα API call το TransparentBlt.


    Sex is like programing; One mistake, and you will have to support it for the rest of your life…
  •  18-12-2005, 15:20 8074 σε απάντηση της 8012

    Απ: Διαφανής σχεδίαση. Με PictureBox;

    raPhaeL, σ' ευχαριστώ για το καλωσόρισμα, το ενδιαφέρον και την άμεση απόκριση. Διαπίστωσα πως η απάντησή σου είναι εύστοχη σύμφωνα με τα λεγόμενά μου. Πρέπει όμως να διευκρινίσω:

    Στο συνημμένο project κάνεις επικόλληση ενός picturebox σε ένα άλλο picturebox με χρήση διαφανούς χρώματος. Όμως και πάλι το Destination PictureBox δεν έχει διαφανές φόντο, το οποίο είναι και το ζητούμενό μου.

    Να γίνω πιο συγκεκριμένος:
    Προσπαθώ να φτιάξω ένα πρόγραμμα που να προσομοιώνει την κίνηση των πλανητών του ηλιακού συστήματος. Χρειάζομαι ελεγκτήρια εικόνας που θα αναπαριστούν πλανήτες. Άρα χρειάζομαι μία τετράγωνη εικόνα σχεδιασμένη μόνο στην περιοχή του κυκλικού δίσκου που περιέχει και τα υπόλοιπα pixel να είνα διαφανή. Η εικόνα αυτή θα κινείται. Άρα δεν μπορώ να κάνω διαρκώς επικόληση με διαφανές χρώμα. Πρέπει το ίδιο το ελεγκτήριο της εικόνας να υποστηρίζει διαφανές φόντο.

    Μία έμμεση λύση που φαντάζομαι είναι να μπορώ να σχεδιάζω ένα picturebox, να το αποθηκεύω στο σκληρό σε μορφή όπου υποστηρίζει διαφανές φόντο (gif?) και στη συνέχεια να φορτώνω την εικόνα που αποθήκευσα σε ένα ελεγκτήριο image όπου υποστηρίζεται το διαφανές φόντο. Κάτι τέτοιο όμως πρέπει να γίνεται σε χρόνο εκτέλεσης διότι θέλω να υπάρχει η δυνατότητα ο χρήστης να μπορεί να ορίζει το χρώμα του πλανήτη και την ακτίνα του. Άρα πρώτα θα μου δίνει ο χρήστης το χρώμα και τη διάσταση και μετά θα σχεδιάζεται ο πλανήτης (διότι αν ήταν για το χρόνο σχεδίασης θα έφτιαχνα τις εικόνες στο Photoshop και θα τις φόρτωνα απευθείας). Σε αυτήν την περίπτωση, λοιπόν, το ζητούμενό μου είναι να σχεδιάζω και να αποθηκεύω αρχεία φωτογραφίας με διαφανές φόντο.

    Αυτό βέβαια θα μου λύσει το ένα από τα δύο προβλήματά μου.

    Ένα δεύτερο πρόβλημά μου είναι:
    Θέλω να μπορώ κατά το χρόνο εκτέλεσης όπου ο πλανήτης θα κινείται, να σχεδιάζω επάνω σε ένα ελεγκτήριο εικόνας την τροχιά του. Κι αυτό ώστε να μπορεί ο χρήστης να ορίζει αν η τροχιά του πλανήτη θα διαγράφεται ή όχι, και να μπορεί να αλλάζει κάτι τέτοιο όποτε θέλει. Έτσι θέλω να σχεδιάζω την τροχιά του κάθε πλανήτη σε διαφορετικό ελεγκτήριο και να μπορώ να εμφανίσω και δύο και τρία ελεγκτήρια ταυτόχρονα χωρίς το φόντο του ενός να επισκιάζει όλα τα άλλα. Σκέφτομαι κάτι σαν

    Dim Planet(1 to 10) as PlanetType (που θα έχω ορίσει)
    Dim PlanetPathPic(1 to 10) as PictureBox?

    και με έναν Timer να σχεδιάζω

    For n = 1 to 10
    Planet(n).DrawPath = True then PlanetPathPic(n).Pset ...

    και αν ο χρήστης δε θέλει να φαίνεται η τροχιά π.χ. του πλανήτη Planet(m) θα δίνω την εντολή

    PlanetPathPic(m).visible = False. (αντίστοιχα PlanetPathPic(m).visible = True αν θέλει).

    Οπότε μία έμμεση λύση, όπως προανέφερα, με σχεδιασμό σε PictureBox, αποθήκευση σε μορφή gif στο σκληρό και φόρτωση σε ελεγκτήριο Image δε βοηθάει. Εδώ χρειάζομαι ένα ελεγκτήριο που να μπορώ να σχεδιάζω και να έχει διαφανές φόντο.

    Οποιαδήποτε ιδέα - παρατήρηση - επισήμανση - ...θα με βοηθούσε πολύ
    Ευχαριστώ

    Υ.Γ. Να πω πως το TransparentBlt, αν και δεν ήταν αυτό που έψαχνα, δεν το γνώριζα και μου δημιουργεί την απορία: Είναι η δεύτερη φορά που μου δίνει κάποιος σε ερώτησή μου μία απάντηση με συνάρτηση API. Που μπορώ να κάνω κι εγώ μία τέτοια αναζήτηση σε βιβλιοθήκες συναρτήσεων; Και ακόμη περισσότερο: Στο API Viewer φορτώνω συναρτήσεις αλλά 1. πώς μπορώ να ξέρω τι κάνουν; 2. πώς μπορω να ξέρω με ποια σύνταξη εντολών λειτουργούν;

  •  18-12-2005, 16:55 8077 σε απάντηση της 8074

    Απ: Διαφανής σχεδίαση. Με PictureBox;

    Μάλλον κάτι τέτοιο θέλεις : VB-OpenGL : Solar System XP
    Sex is like programing; One mistake, and you will have to support it for the rest of your life…
  •  18-12-2005, 20:17 8080 σε απάντηση της 8012

    Απ: Διαφανής σχεδίαση. Με PictureBox;

    Πολύ καλό.Σα λειτουργία δεν είναι αυτό που θέλω. Είναι πολύ καλό στα γραφικά του, είναι πολύ μακριά από τις δικές μου γνώσεις προγραμματισμού (ο κώδικας του μου είναι εντελώς ξένος), αλλά όχι αυτό που θέλω. Αυτό που επιχειρώ να κάνω έχει σημαντικές διαφορές στον τρόπο λειτουργίας και παρουσίασης. Αν μου το έστειλες να δω τον κώδικα ώστε να βγάλω κάποιαν άκρη, ήταν καλή η σκέψη σου, αλλά για τα δικά μου δεδομένα, κάπως αισιόδοξη. Θα προσπαθήσω πάντως. Ευχαριστώ πολύ.
  •  19-12-2005, 14:24 8098 σε απάντηση της 8080

    Απ: Διαφανής σχεδίαση. Με PictureBox;

    Συνημμένα: Transparency.rar

    Σου ξαναστέλνω το πρώτο project αλλαγμένο. Μέσα σε αυτό έχει και ένα usercontrol που κάνει αυτό που θέλεις αν και για τη χρήση που το θέλεις νομίζω ότι είναι ακατάλληλο (Performance). Δες αν σου κάνει αυτό που σου στέλνω και το ξανασυζητάμε.

    Υ.Γ. Τα API Declarations υπάρχουν όλα στο MSDN.Τώρα για χρήση αυτών και παραδείγματα έχει άφθονα στο NET.(Ένα καλό site για API είναι το AllAPI).


    Sex is like programing; One mistake, and you will have to support it for the rest of your life…
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems