+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

disegno a mano libera vb.net

  1. #1
    ddos non  in linea Novello
    ho da poco comprato il nuovissimo htc touch hd cellulare con risoluzione 800*480 windows mobile
    proprio il suo schermone mi ha fatto venire voglia di realizzare qualkosa per il mio nuovo "amico" e la seconda applicazione che decido di sviluppare in vb.net per devices ....

    e veniamo al problema....

    avrei necessita di creare un box dove poter disegnare con il pennino del tel, ho fatto qualkosa e funziona ma ho usato l evento mouse_move che ha qualke problema.
    infatti muovendo il pennino un po piu velocemente ho dei "buchi" nelle linee che creo mettendo tutti cerchietti alle coordinate del mouse.
    ora mi chiedo.... c un modo per avere un refresh del mouse_move piu elevato e risolvere il problema oppure devo procedere completamente in altro modo e se si come ? grazie a tutti in anticipo

    uso visual studio 2008

    ecco il codice che uso.

    Public Class Form1
        Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
            PictureBox1.CreateGraphics.FillEllipse(New SolidBrush(Color.Red), e.X, e.Y, Val(TextBox1.Text), Val(TextBox1.Text))
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            PictureBox1.CreateGraphics.Clear(Color.DimGray)
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
    End Class
    

  2. #2
    ddos non  in linea Novello
    mi sa che nn c soluzione..... un brutto limite

  3. #3
    Invece di creare delle ellissi, prova a tracciare delle linee dall'ultimo punto disegnato a quello corrente ...
    ℹ️ Leggi di pi su AntonioG ...

  4. #4
    ddos non  in linea Novello
    provo e vedo se va meglio

  5. #5
    L'avatar di bumm
    bumm non  in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Se la linea deve essere doppia, dovresti creare anche delle ellissi(con diametro uguale alla larghezza della linea) nei punti chiave al'inizio e alla fine della linea
    ℹ️ Leggi di pi su bumm ...

  6. #6
    L'avatar di TheTruster
    TheTruster ora  in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Sono ancora decisamente nuovo a vb.Net, ma giusto per esercizio ho provato a risolvere il problema

    Cos dovrebbe andare:

    Public Class Form1
        Dim OldCoord As Point
    
        Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Left Then
                OldCoord = New Point(e.Location)
            End If
        End Sub
    
        Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
            If e.Button = Windows.Forms.MouseButtons.Left Then
    
                Dim brSize As Single = TextBox1.Text
                Dim myColor As System.Drawing.Color = Color.Red
                Dim myPen As System.Drawing.Pen = New Pen(myColor, brSize)
                Dim myBrush As System.Drawing.Brush = New System.Drawing.SolidBrush(myColor)
    
                PictureBox1.CreateGraphics.DrawLine(myPen, OldCoord, e.Location)
                PictureBox1.CreateGraphics.FillEllipse(myBrush, e.X - (brSize / 2), e.Y - brSize / 2, brSize, brSize)
                If OldCoord <> e.Location Then
                    OldCoord = e.Location
                End If
    
            End If
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            PictureBox1.CreateGraphics.Clear(Color.DimGray)
        End Sub
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            TextBox1.Text = 5
        End Sub
    End Class
    
    TheTruster
    ℹ️ Leggi di pi su TheTruster ...

  7. #7
    ddos non  in linea Novello
    mmmm nn so perche forse perche lo hai scritto per una applicazione win io lo sto scrivendo per smart devices con WM 6.1 cmq alcuni membri mi risultano mancanti cmq ho fatto qualkosa di accettabile anche avendo (io) uno stile di programmazione che definire incasinato e "amatoriale" sembra poco

  8. #8
    ddos non  in linea Novello
    posto il codice come attualmente che mi risulta gia una soluzione valida.
    tenendo presente che sono mooooooolto noob nella programmazione con .net e che il codice non stato ottimizzato e quindi si potra/dovra ridurre e appunto ottimizzare
    il codice completo di altre parti non necessarie tipo tasti et simila...
    Public Class Form1
        Dim ics
        Dim ipsilon
        Dim star = 0
    
        Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
            If star = 0 Then
                ics = e.X
                ipsilon = e.Y
                'PictureBox1.CreateGraphics.FillEllipse(New SolidBrush(Color.Red), ics, ipsilon, Val(TextBox1.Text), Val(TextBox1.Text))
                star = 1
            End If
        End Sub
        Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
            'star = 1
            If star = 0 Then
                ics = e.X
                ipsilon = e.Y
                star = 1
            End If
            Dim blackPen As New Pen(Color.Red, Val(ComboBox1.Text))
            'PictureBox1.CreateGraphics.FillEllipse(New SolidBrush(Color.Red), e.X, e.Y, Val(TextBox1.Text), Val(TextBox1.Text))
            If star = 1 Then PictureBox1.CreateGraphics.DrawLine(blackPen, ics, ipsilon, e.X, e.Y) : star = 1
            ics = e.X
            ipsilon = e.Y
        End Sub
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            PictureBox1.CreateGraphics.Clear(Color.DimGray)
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ComboBox1.Text = "3"
     
        End Sub
        Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
            star = 0
        End Sub
    End Class
    

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. disegnare a mano libera su immagine
    Da robcol nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 29-07-2017, 11:38
  2. [ASP.Net]Popolare Gridview a mano
    Da Rocco nel forum ASP 3, ASP .Net
    Risposte: 7
    Ultimo Post: 07-01-2016, 20:17
  3. [Access - VBA] Cursore mano su una label
    Da 1sirena nel forum Microsoft Access
    Risposte: 7
    Ultimo Post: 06-05-2010, 13:52
  4. ciao a tutti....ki mi da una mano??
    Da BARDOK nel forum Presentati
    Risposte: 1
    Ultimo Post: 12-08-2009, 19:51
  5. mi presento e... vi chiedo gentilmenteuna mano :)
    Da gimmy25 nel forum Presentati
    Risposte: 2
    Ultimo Post: 12-09-2008, 15:31