Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB2010] Classe Graphic
Forum - C# / VB.NET - [VB2010] Classe Graphic

Avatar
eternauta (Normal User)
Newbie


Messaggi: 5
Iscritto: 07/06/2011

Segnala al moderatore
Postato alle 14:43
Lunedì, 05/09/2011
Ciao,

Spero di farmi capire.. ho un controllo (un usercontrol molto simile a una label per intenderci) che devo far 'scivolare' a destra e a sinistra su un'altro usercontrol (molto simile a un panle.. si ci ho preso gusto con questi user control) tramite questo codice:

Codice sorgente


Private Sub sposta_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

      
        If e.Button = MouseButtons.Left Then
            sender.Left = sender.Left + (e.X - memx)
            sender.inizio = sender.Left
            sender.fine = sender.Left + sender.Width
            'qui dovrei disegnare le line con i punti sender.inizio, marginesuperiore di timetable 'e sender.inizio e margine inferiore di timetable.. lo stesso per sender.fine

'.inizio e .fine sono delle proprieta del sender che è un usercontrol di nome slot


        End If

    End Sub




Il tutto si svolge su un'altro usercontrol di nome timetable, anch'esso simile a un panel. Inizialmente avevo eliminato i controlli simili ai panel (da ora li chimaerò score) su cui far scivolare i controlli simili a label (da ora slot), e mi muovevo direttamente sul timtable, cosi da avere 'un contatto più diretto'. Per ragioni che qui ometto, non posso eliminare i score.. Ma ho necessità di disegnare sul timetable, in prossimità dell'inizio e della fine del controllo slot un linea che va dal margine superiore al margine inferiore del timetable.

Ho provato a implementare il disegno direttamente nel codice del timetable, facendo poi fare un refresh continuo al codice.



Public Class timetable
    Public _numero_sale As Integer
    Dim _capienza As Int32
    Dim _formato As _format
    Enum _format
        f3d
        f35mm
        fdgt
    End Enum
    Dim _point As Integer
    Dim punti As New ArrayList

    Public Sub New()
        InitializeComponent()
    End Sub

. . .


Private Sub timetable_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        'disegna la timeline
        '...
        Dim p As New Pen(Brushes.Peru, 3)
        Dim y As Integer
        Static linebrush1 As New HatchBrush(HatchStyle.Percent05, Color.FromArgb(100, Color.Black), Color.Transparent)
        Static fontused As New Font("ww", 12, FontStyle.Bold)
        Static fontcap As New Font("ww", 7, FontStyle.Regular)
        Dim s As String, cap As String
        Dim orari() As String = {"11.00", "12.00", "13.00", "14.00", "15.00", "16.00", "17.00", "18.00", "19.00", "20.00", "21.00", "22.00", "23.00", "00.00", "01.00", "02.00", "03.00", "04.00"}
        Dim x As Integer




        'disegni le linee tratteggiate verticali
        p.DashStyle = DashStyle.DashDotDot
        For i = 100 To 1200
            e.Graphics.DrawLine(p, i, 0, i, Me.Height)
            i = (i + 60) - 1
        Next
        y = 20
        x = 120

        'disegno le etichette delle sale e i rettangoli
        For i = 0 To numero_sale - 1
            s = "SALA" & i + 1
            cap = "cap:" & capienza & " formato:" & formato
            e.Graphics.DrawString(s, fontused, Brushes.Black, 10, y)
            e.Graphics.DrawString(cap, fontcap, Brushes.Black, 10, y + 22)
            'questo fa i rettangoli label con i dati sala
            e.Graphics.DrawRectangle(Pens.Black, 5, y, 90, 40)
            y += 50
        Next

        For Each Str As String In orari
            'metto orari
            e.Graphics.DrawString(Str, fontcap, Brushes.Black, x, 5)
            x += 60
        Next

        For Each po As Integer In punti
            Dim point1 As New Point(point, 0)
            Dim point2 As New Point(point, Me.Height)
            e.Graphics.DrawLine(Pens.Black, point1, point2)
        Next


    End Sub




Questo comporta che sembra di giocare a call of duty 4 su un 386 e riesco a disegnare solo una riga (vorrei che le righe in prossimità dell'inizio e fine della slot si spostassero e si fermassero con la slot stessa: ora non ricordo se era cosi, ma vorrei gestire questo oggetto come pinnacle gestisce pezzi di filmato..) per volta, in relazione all'oggetto che sposto e rilascio per utlimo.

Leggendo il totem ho capito che devo usare la classe graphics, ma come faccio ad adattarla alle mie esigenze?

Avete qualche consiglio?

PM