Ciao,

Qualche tempo ho avanzato lo stesso problema. Pensavo di aver risolto (grazie a Tas) costruendo un user control ad hoc, ma per una maniera o per l'altra mi ritrovo di nuovo fermo sul seguente problema, ovvero: 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:
  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 sull'ormai famoso usercontrol timetable, anch'esso simile a un panel. Inizialmente, come già detto su consiglio di Tas, avevo eliminato i controlli simili ai panel (da ora score) su cui far scivolare i controlli simili a label (da ora slot), e mi muovevo direttamente sul timtable. Per ragioni che qui ometto, non posso eliminare i score.. Ma ho necessita 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.


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 un a 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?