Oppure

Loading
05/09/11 12:43
eternauta
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:

[CODE]
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?
aaa