Login Register
venerdì 10 febbraio 2012
 
Forums
I Forum di WPF Tips & Tricks
Applicare la trasformazione definitivamente
Last Post 22 lug 2010 04:18 by Max. 1 Replies.
Printer Friendly
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Author Messages
Max
Basic Member
Basic Member
Posts:13
Avatar

--
22 lug 2010 09:23  
Ho creato un esempio dove seleziono un cerchio e lo sposto tramite translatetransform, il punto è che se lo riseleziono mi ritorna alla posizione originale, in quanto la trasformazione non è definitiva. se volessi applicare la trasformazione in maniera definitiva cosa dovrei fare?

Ho provato ad usare setLeft e SetTop alla fine della trasformazione, prendendo la cooridnata sinistra del cerchio e sommandola alla differenza tra il punto di origine sottratto il punto di spostamento del mouse. Però mi fa un casino, mi trasla in maniera a me non comprensibile.

ecco il codice da me scritto:

Class Window1

Dim ElemSelezionato As Ellipse = Nothing
Dim Click As Boolean = False
Dim StartPoint As Point = Nothing



Private Sub Canvas1_MouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)

Try

If e.Source IsNot Canvas1 Then
If e.Source.GetType Is GetType(Ellipse) Then
Dim MioCerchio As Ellipse = CType(e.Source, Ellipse)

MioCerchio.Stroke = Brushes.Red
ElemSelezionato = MioCerchio

'Questo è il primo punto in cui ho cliccato il mouse
StartPoint = e.GetPosition(Canvas1)

'Questa variabile mi serve per verificare se il tasto è premuto
Click = True

End If
End If

Catch ex As Exception

End Try

End Sub



Private Sub Canvas1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles Canvas1.MouseMove
If e.Source IsNot Canvas1 Then

If Click Then
Dim TT As New TranslateTransform()

'Visualizzo i dati per farmi un'idea
Label1.Content = e.GetPosition(Canvas1)
Label2.Content = Canvas.GetLeft(ElemSelezionato) & " ; " & Canvas.GetTop(ElemSelezionato)

'imposto quanto traslare l'oggetto
TT.X = (e.GetPosition(Canvas1).X - StartPoint.X) 'la differenza è di quanto mi sono mosso con il mouse
TT.Y = (e.GetPosition(Canvas1).Y - StartPoint.Y)

'applico la trasformazione all'oggetto
ElemSelezionato.RenderTransform = TT

End If

End If
End Sub

Private Sub Canvas1_MouseLeftButtonUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)


'If e.Source IsNot Canvas1 Then
' Dim a As Double = e.GetPosition(Canvas1).X
' Dim b As Double = StartPoint.X
' Dim x As Double = Canvas.GetLeft(ElemSelezionato)
' Dim y As Double = Canvas.GetTop(ElemSelezionato)


' Canvas.SetLeft(ElemSelezionato, x + e.GetPosition(Canvas1).X - StartPoint.X)
' Canvas.SetTop(ElemSelezionato, y + (e.GetPosition(Canvas1).Y - StartPoint.Y))
'End If

Click = False
ElemSelezionato = Nothing

End Sub
End Class


il testo commentato sulla routine Canvas1_MouseLeftButtonUp, è il mio tentativo di salvare definitivamente la trasformazione.



Max
Basic Member
Basic Member
Posts:13
Avatar

--
22 lug 2010 04:18  
ok, ho risolto i miei dilemmi.

carico se ci riesco la soluzione che ho creato, nel caso che qualcuno la voglia controllare e migliorarla, sopratutto migliorarla.

L'applicazione crea due figure, un cerchio e un quadrato. Può selezionare le figure, ci sono errori di clipping e di sovrapposizione delle figure, quando ci si passa sopra si rischia di selezionare una figura con lo ZIndex più grande.

Sto lavorando a migliorarla, se a qualcuno interessasse fare l'esperienza assieme...

Al File va aggiunta l'estenzione .zip

P.S.

- Dato che non sono riuscito in nessun modo a caricare il file potete raggiungerlo a questo indirizzo:
http://www.madevils.altervista.org/...ndDraw.zip

- Versione senza bug di clipping e di trascinamento:
http://www.madevils.altervista.org/...dDraw2.zip


DragAndDraw1

You are not authorized to post a reply.

Active Forums 4.2
  
hd porn
 
© 2009-2011 WPF Tips&Tricks Team - Visual Basic Tips&Tricks Network
 
porno izleporno izle