Ottenere rettangoli come su paint

di il
12 risposte

Ottenere rettangoli come su paint

Salve
vorrei creare un app che crei rettangoli trascinando il muose e ce la ho fatta ma riscontrando 2 problemi
1)come posso far mostrare questi rettangoli mentre si stanno disegnando ovvero mentre le coordinate non sono ancora definite e stai ancora trascinando il muose
2)come si fa tramite un bottone a cancellare tutti gli elementi grafici (rettangoli) creati in precedenza con il muose
grazie mille

12 Risposte

  • Re: Ottenere rettangoli come su paint

    Intanto si scrive MOUSE ...

    Per il resto, soprattutto la seconda domanda, implica la scrittura di codice abbastanza complesso (quasi un minicad).
    Devi provvedere alla memorizzazione delle caratteristiche degli oggetti all'interno di liste apposite che ti permettano di gestire singolarmente le figure. In questo modo puoi provvedere a ridisegnare solo quello che è presente in tali liste.

    Oltre questo non vado perché, come ti dicevo, non si può rispondere completamente in un post in un thread a problemi così complessi.

    Del resto, tu hai evidentemente una preparazione molto limitata (in generale, della OOP e di VB.NET) ma cerchi di scrivere subito programmi che per programmatori esperti sarebbero comunque abbastanza impegnativi. Quindi non ti meravigliare se avrai poche risposte e molti problemi.
  • Re: Ottenere rettangoli come su paint

    Grazie per la correzione e per il suggerimento, si io saranno 3 4 mesi che programmo perchè vado a lavorare ogni poco da un programmatore abbastanza esperto pero dico quasi che posso cavarmela su alcune cose dopo lui mi da da fare programmi che gli servono e per imparare continuo a provare finchè mi riescono, è cosi che ho imparato facendo ricerche sulle cose che mi servivano
    non saprei neanche un modo migliore per imparare questo penso sia il piu rapido
  • Re: Ottenere rettangoli come su paint

    Comunque per la seconda domanda ce la ho fatta
    bastava scrivere nel codice del bottone che l altezza e spessore del rettangolo è 0
  • Re: Ottenere rettangoli come su paint

    FeeBled ha scritto:


    Comunque per la seconda domanda ce la ho fatta
    bastava scrivere nel codice del bottone che l altezza e spessore del rettangolo è 0
    Quindi se hai due rettangoli uno sull'altro in parte, se cancelli il primo cosa succede ?
  • Re: Ottenere rettangoli come su paint

    Si cancellano entrambi perche alla fine e sempre lo stesso rettangolo che si ripete e poi ci ho aggiunto (al bottone intendo) un me.refresh() che anche se ci fossero 300 rettangoli ne fa diventare uno e poi lo cancella
  • Re: Ottenere rettangoli come su paint

    Pero per la prima è ancora difficile
  • Re: Ottenere rettangoli come su paint

    FeeBled ha scritto:


    Si cancellano entrambi perche alla fine e sempre lo stesso rettangolo che si ripete e poi ci ho aggiunto (al bottone intendo) un me.refresh() che anche se ci fossero 300 rettangoli ne fa diventare uno e poi lo cancella
    No ... non ho capito ... Che vuol dire "è lo stesso rettangolo"? "Lo fa diventare uno"?

    Non mi pare che un "paint" funzioni così .... o sei completamente fuori strada, o non ho capito che stai facendo.
  • Re: Ottenere rettangoli come su paint

    Il sinonimo di paint mi serviva per far capire che i rettangoli dovessero avere lo stesso effetto mentre li disegni ovvero che si allarga e si stringe quando lo disegni
    ed il rettangolo è uno ma tanti perchè puoi disegnarne quanti ne vuoi ma si origina dalla stessa variabile
  • Re: Ottenere rettangoli come su paint

    
    Public Class Form1
        Public r As Rectangle
        Public sp As Integer = 10
        Public w As Integer = 0
    
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
    
        End Sub
        Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
            e.Graphics.DrawRectangle(New Pen(Color.Red, sp), r)
            e.Graphics.Dispose()
    
    
    
        End Sub
    
    
        Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
            r.X = e.X
            r.Y = e.Y
    
        End Sub
    
        Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
            If e.X < r.X Then
                r.Width = r.X - e.X
                r.X = e.X
            Else
                r.Width = e.X - r.X
            End If
    
            If e.Y < r.Y Then
                r.Height = r.Y - e.Y
                r.Y = e.Y
            Else
                r.Height = e.Y - r.Y
            End If
            Me.Invalidate(r)
    
    
    
        End Sub
    
    
    
        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    
    
    
        End Sub
    
        Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            w = 1
            r.Height = 0
            r.Width = 0
            Me.Refresh()
        End Sub
    End Class
     
    questo è il codice
  • Re: Ottenere rettangoli come su paint

    Usa i tag CODE nel forum per il codice
  • Re: Ottenere rettangoli come su paint

    Quindi hai UN SOLO oggetto in realtà, quelli visualizzati non sono più gestibili.

    E' tutt'altra storia rispetto a quello che pensavo volessi fare ...
  • Re: Ottenere rettangoli come su paint

    Eh si mi sa che te hai capito che io volessi fare un programma simele a paint
    invece per la prima domanda ho provato a far qualcosa mi sono avvicinato ma sono bel lontano dal risolvere quel problema
Devi accedere o registrarti per scrivere nel forum
12 risposte