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

 

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

Regions για Forms

Îåêßíçóå áðü ôï ìÝëïò kostasdiktia. Τελευταία δημοσίευση από το μέλος kostasdiktia στις 22-02-2006, 14:00. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-02-2006, 22:38 9752

    Regions για Forms

    Προσπαθώ να δημιουργήσω μία νέα region για την Form1 (Ο κώδικας είναι convert από C -> πιθανά λάθη):

    Public Class Form1

       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

          Dim components As System.ComponentModel.Container = Nothing

          Dim FrmBack As New Bitmap("C:\Documents and Settings\user\Desktop\foto.bmp")

          Regions.test.CreateControlRegion(Me, FrmBack)

       End Sub

    End Class

    ''''''''''''''''''''''''''''''''   Έως εδώ ο κώδικας για την Form1 '''''''''''''''''''''''''''''''' 

    Namespace Regions

        Public Class test

       Public test

     

         Public Shared Sub CreateControlRegion(ByVal control As Control, ByVal bitmap As Bitmap)

          control.Width = bitmap.Width

          control.Height = bitmap.Height

          Dim form As Form = CType(control, Form)

          form.Width += 15

          form.Height += 35

          form.FormBorderStyle = FormBorderStyle.None

          form.BackgroundImage = bitmap

          Dim graphicsPath As Drawing2D.GraphicsPath = CalculateControlGraphicsPath(bitmap)

       End Sub

       Private Shared Function CalculateControlGraphicsPath(ByVal bitmap As Bitmap) As Drawing2D.GraphicsPath

          Dim graphicsPath As New Drawing2D.GraphicsPath

          Dim row As Integer

          Dim col As Integer

          Dim colOpaquePixel As Integer = 0

          For row = 0 To bitmap.Height - 1

          colOpaquePixel = 0

          For col = 0 To bitmap.Width - 1

          If bitmap.GetPixel(col, row) <> Color.Transparent Then

             colOpaquePixel = col

             Dim colnext As Integer

             colnext = col

          For colnext = colOpaquePixel To bitmap.Width - 1

             If bitmap.GetPixel(colnext, row) = Color.Transparent Then

         Exit For

          graphicsPath.AddRectangle(New Rectangle(colOpaquePixel, row, colnext - colOpaquePixel, 1))

           col = colnext

         End If

    Next colnext

    End If

    Next col

    Next row

    Return graphicsPath

    End Function

    End Class

    End Namespace

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

     

    Το πρόγραμμα τρέχει, η Form1 παίρνει το μέγεθος της foto αλλά δεν την εμαφανίζει(συνεχίζω να βλέπω μόνο την επιφάνεια του Studio)! Όταν κάνω minimize το Studio κατά την δειάρκεια του run, η περιοχή που κανονικά έπρεπε να απεικονίζει την Form παγώνει στην εικόνα που έδειχνε πριν από λίγο το Visual Studio... (το πρόγραμμα κάνει run χωρίς κάποιο "κόλλημα"). Τι μπορεί να φταίει? Μάλλον κάτι στον κώδικα Big Smile [:D]! Μπορεί να βοηθήσει κάποιος?

    Ευχαριστώ προκαταβολικά..

     

     

     


    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
  •  15-02-2006, 23:49 9757 σε απάντηση της 9752

    Απ: Regions για Forms

    Τι θες να κάνεις; Να δώσεις μη-τετράγωνο σχήμα στη φόρμα; Είδα κάτι Color.Transparent - γι αυτό το λέω...

    Δεν μπορώ να κοιτάξω τον κώδικά σου, ωστόσο μέχρι να τον κοιτάξει κάποιος άλλος, δοκίμασε αυτό

    http://msdn.microsoft.com/coding4fun/inthebox/trickedoutapp/default.aspx

    Τη μετατροπή από C# σε VB.ΝΕΤ την κάνεις με το χέρι ή με εργαλείο; Με το χέρι μαθαίνεις, με το εργαλείο επιβεβαιώνεις...


    Vir prudens non contra ventum mingit
  •  16-02-2006, 02:35 9772 σε απάντηση της 9757

    Απ: Regions για Forms

    Με converter έχει γίνει η μετατροπή, αλλά έχω κάνει κάποιες αλλαγές..
    Όσο για το μη τετραγωνικό σχήμα της φόρμας..ναι κάτι τέτοιο θέλω να δημιουργήσω! Η φόρμα μου να έχει το σχήμα της "ζωγραφιάς" του bmp file..
    Χρήσιμο το link που έδωσες..ευχαριστώ πολύ KelMan..
    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
  •  20-02-2006, 14:52 9888 σε απάντηση της 9752

    Απ: Regions για Forms

    Εγώ πάντως όταν θέλω να δημιουργήσω μη τετράγωνη φόρμα, κάνω το εξής γρήγορο και εύκολο κόλπο.
    -Δίνω ένα άσχετο χρώμα ως Background της Φόρμας
    -Θέτω στα properties της φόρμας το χρώμα αυτό ώς transparency key.
    -Θέτω None στο Boundary Style.
    Δέν είναι πολύ λειτουργικό, αλλά είναι γρήγορο και απλό.

    Hope this Helps!!
  •  20-02-2006, 19:10 9897 σε απάντηση της 9752

    Απ: Regions για Forms

    Μα και πάλι τετράγωνη δεν θα σου βγει? όταν μιλάς για Boundary Style εννοείς το FormBorderStyle ή κατάλαβα λάθος?
    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
  •  21-02-2006, 14:16 9917 σε απάντηση της 9752

    Απ: Regions για Forms

    Συγνώμη για την έλειψη ακρίβειας, αλλά αυτό ακριβώς εννοούσα.Αν θέσεις None στο FormBorderStyle.
    Θα πρέπει να προσθέσω ότι το κόλπο συμπληρώνεται με την προσθήκη ενός PictureBox που θα έχει ως BackGroundColor Web-Transparent, του οποίου το Image θα παίζει τον ρόλο της φόρμας(αν είναι το Image κυκλικό, θα έχεις κυκλική φόρμα).Αν δεν χρησιμοποιήσεις το PictureBox τα Control απλά θα αιωρούνται στο Desktop.
    Καλό θα είναι να προσθέσεις και δικά σου Control για Maximize,Minimize,Close.
  •  21-02-2006, 17:14 9922 σε απάντηση της 9752

    Απ: Regions για Forms

    Ο άλλος τρόπος είναι να χρησιμοποιήσεις low level hooking για να κάνεις skin την φόρμα (WM_PAINT,WM_NCPAINT,WM_RESIZE κλπ), όπως επίσης και τo CreateParameters Structure της CreateWindow, αλλά νομίζω οτι παραείναι τραβηγμένο για την περίπτωσή σου, εκτός αν θές γενικώς να κάνεις skin την εφαρμογή και όχι μόνο το Form Border.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  21-02-2006, 18:25 9923 σε απάντηση της 9752

    Απ: Regions για Forms

    Pkefal γίνε λίγο πιο σαφής αν γίνεται..μάλλον πέστα λίγο πιο κατανοητά για έναν αρχάριο..Θα το κοιτάξω evliatsas ευχαριστώ..
    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
  •  21-02-2006, 23:10 9934 σε απάντηση της 9752

    Απ: Regions για Forms

    Ooops ,συγγνώμη.. Αν έχεις παρατηρήσει ορισμένες εφαρμογές δεν έχουν τα κλασικά παράθυρα σύμφωνα με το skin/theme των Windows, αλλα εμφανίζονται με δικό τους..Αυτό γίνεται "πιάνοντας" τα μηνύματα που στέλουν τα Windows σε ένα παράθυρο οταν δημιουργείτε απο την CreateWindow.Αν λοιπόν εσύ "πιάσεις" αυτά τα μηνύματα, μπορείς να κάνεις το παράθυρο να φαίνεται όπως εσύ θέλεις, "ζωγραφίζοντας" το εσυ ο ίδιος, πχ με .png αρχεία, κλπ..Τώρα, αυτό μπορεί να γίνει για ΟΛΑ τα controls (combobox,textbox,label,radio klp) αλλά και μόνο στο Form Border (το γύρω γύρω της φόρμας, μαζί με τα κουμπάκια minimize,maximize,close και help).
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  21-02-2006, 23:31 9935 σε απάντηση της 9752

    Απ: Regions για Forms

    Θα συμπληρώσω, λέγοντας ότι παλιότερα τουλάχιστον, υπήρχαν skin frameworks, τα οποία αναλάμβαναν να κάνουν ακριβώς αυτήν τη δουλειά, χωρίς να μπλεχτείς με low-level πράγματα.
    Δεν ψάχνεις αν υπάρχει κάτι αντίστοιχο που μπορεί να σε βοηθήσει σε αυτό που ψάχνεις;
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  22-02-2006, 11:11 9946 σε απάντηση της 9752

    Απ: Regions για Forms

    Όλα τα skin components που υπάρχουν για .Net ειναι υπερβολικά buggy και έχουν ελάχιστα features.. (Skincrafter,VSSKIN,DotnNetSkin 2005 κλπ).. ειναι ΌΛΑ άχρηστα..οταν τα ζορίσεις , η αν έχει παρα πολλά controls η φορμα κλπ, βλέπεις τρελλό performance hit, σε αντίθεση με το manual hooking.. Δύσκολο και πιο χρονοβόρο μεν, καλύτερο αποτέλεσμα δε..
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  22-02-2006, 13:56 9971 σε απάντηση της 9752

    Απ: Regions για Forms

    Ναι έτσι είναι όντως (και γι' αυτό η τελευταία απόπειρα να χρησιμοποιήσω κάτι τέτοιο ήταν 9-10 χρόνια πριν, σε VB5), αλλά αν χρειάζεται κάτι απλό και άμεσο, μπορεί να τον καλύψει.
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  22-02-2006, 14:00 9973 σε απάντηση της 9752

    Απ: Regions για Forms

    Ευχαριστώ για τις συμβουλές σας...
    No knowledge can be certain, if it is not based
    upon mathematics or upon some other knowledge
    which is itself based upon the mathematical
    sciences.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems