Disegnare in c#

di il
13 risposte

Disegnare in c#

Ciao, ancora io.
Dopo la domanda complessa del primo argomento, passo ad una domanda più semplice.
Sono nella mia Finestra ( applicazione tipo Windows Form) e cerco di tracciare una linea ( mi serve per capire coem funzionano i comandi per disegnare)
e sebbene il debug non mi dia problemi, le istruzioni per tracciare la linea non vengono eseguite.
O meglio, nel form non viene visualizzata la linea.
le linee di codice sono

Graphics g=this.CreateGraphics();
Pen p=new Pen(Color.Black);
g.DrawLine(p,0,0,100,100);

a rigor di logica dovrei veder apparire una linea a 45 gradi dall'angolo in alto a sx.
Mi è venuto il dubbio che sia come in Java che non si può tracciare nulla sul form principale. Chi mi può rispondere?

"Could be worse" -"Perhaps?"
"Could be raining!"

13 Risposte

  • Re: Disegnare in c#

    Hai provato ad inserire il codice nell'evento Paint del form?



    SuperCap



    (Le risposte che lascio sono limitate alle mie conoscenze sull'argomento trattato. Quindi potrei anche sbagliare!)
  • Re: Disegnare in c#

    A dire il vero vorrei lasciare fuori dal contesto gli eventi, questo lavoro me lo deve fare sempre e comunque mentre gli eventi sono legati a qualcosa di specifico.


    "Could be worse" -"Perhaps?"
    "Could be raining!"
  • Re: Disegnare in c#

    Ma tutta la programmazione Windows si basa sugli eventi.
    Potresti essere più chiaro?
    Cosa dovrebbe disegnare quello che vuoi?
    O meglio dove hai inserito il codice cha hai riportato?
    Inoltre, tieni presente che devi comunque ridisegnare il contenuto del form in diverse situazioni e l'evento Paint è quello che fa a caso nostro.
    Se mi spieghi cosa vuoi fare di preciso...

    Ciao

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    a dire il vero vorrei lasciare fuori dal contesto gli eventi, questo lavoro me lo deve fare sempre e comunque mentre gli eventi sono legati a qualcosa di specifico.


    "Could be worse" -"Perhaps?"
    "Could be raining!"
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    SuperCap



    (Le risposte che lascio sono limitate alle mie conoscenze sull'argomento trattato. Quindi potrei anche sbagliare!)
  • Re: Disegnare in c#

    Dunque, tenuto conto della mia scarsissam esperienza e che sono agli inizi, ti dico che ho scritto le linee di codice nella classe del form;
    se mi dici che tutto è collegato agli eventi allora perchè gli esempi riportano solo alcuni casi legati ai delegati e altri no?

    trovo che la cosa sia alquanto fuorviante...
    Personalmente volevo solo creare una finestra vuota che, caricando i dati da un file esterno, li usasse per tracciare sta benedetta linea!
    Ho capito che se devo aggiungere un menù ( anche lì ci ho provato ma non è banale...) poi devo ricorrere alla gestione di eventi, ma volevo fare una cosa per volta: prima visualizzo sta linea del diavolo e poi penso ad aggiungere menù ( e quindi la gestione di eventi)
    Spero di essere stato chiaro, altrimenti non hai che da chiedere dove non mi son spiegato

    "Could be worse" -"Perhaps?"
    "Could be raining!"
  • Re: Disegnare in c#

    Nella classe del form mi va bene, ma dipende sempre in quale punto.
    Di sicuro se scrivi una funzione che disegna, dovrai ben chiamarla in qualche punto.
    Bene, funziona in qualsiasi luogo, salvo nell'evento Load del form, proprio perchè il form stesso non è ancora visibile.
    Se mi dici che hai l'applicazione con una finestra vuota, poi, carica i dati (immagino le coordinate), probabilmente hai un qualche pulsante o menù che scatenano un evento e quindi in tale evento chiami la tua funzione. Senza dimenticare che se il form viene coperto o ridotto a icona, il disegno deve essere ripristinato (per questo interviene l'evento Paint).
    Se al contrario hai un'aplicazione che quando si avvia carica i dati e procede a disegnare, bene, anche qui devi basarti sull'evento Paint per tracciare il tuo disegno.
    Non capisco cosa intendi con:

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    se mi dici che tutto è collegato agli eventi allora perchè gli esempi riportano solo alcuni casi legati ai delegati e altri no?

    trovo che la cosa sia alquanto fuorviante...
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    I menù o cose simili non sono banali, ma semplici, bisogna solo capire che anche loro ovviamente scatenano degli eventi, i quali a sua volta, tramite il tuo codice produrranno quanto l'utente desidera.

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    Ho capito che se devo aggiungere un menù ( anche lì ci ho provato ma non è banale...)
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Credo che hai un pò di confusione.
    Nella programmazione .NET come ben saprai tutto è composto da oggetti.
    Anche i menù sono oggetti, che, se vai a osservare il codice prodotto dal designer di Visual Studio, capirai che sono degli oggetti contenuti nell'oggetto contenitore Form.
    Quando viene istanziato l'oggetto form all'interno ci sono tutti gli altri oggetti e quindi i menù ecc.
    Cosa succede, quando vuoi disegnare all'interno del tuo form, ovviamente devi inserire il codice in un qualche punto dell'applicazione, quale può essere, dipende, ma comunque sempre all'interno di un evento, che può essere appunto l'evento Paint (che viene richiamato quando è necessario disegnare il form o ripristinare parti che non sono più valide).

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    poi devo ricorrere alla gestione di eventi, ma volevo fare una cosa per volta: prima visualizzo sta linea del diavolo e poi penso ad aggiungere menù ( e quindi la gestione di eventi)
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Purtroppo non riesco a capire quale ragionamento vuoi fare tu.

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    Spero di essere stato chiaro, altrimenti non hai che da chiedere dove non mi son spiegato
    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Ciao.


    SuperCap



    (Le risposte che lascio sono limitate alle mie conoscenze sull'argomento trattato. Quindi potrei anche sbagliare!)
  • Re: Disegnare in c#

    Grazie per le tue risposte, scusa se è passato del tempo dalla mia ultima risposta ma finalmente ho finito l'applicazione console per l'analisi dei dati ed ora sto riversando tutto in un'applicazione windows form.
    Se ti chiedi il perchè magari te lo spiego in separata sede, ora sono arrivato al nocciolo del problema:
    Ho una voce di menù che crea un form apposito per tracciare le mie linee (a proposito, posso disegnare direttamente sul form o é meglio creare un panel dove disegnare?) e quando lo creo vorrei che tracciasse le linee.
    Quando con Visual Studio accedo al metodo che crea la finestra, questo riceve un System.Event, per disegnare devo accedere invece ad un PaintEvent: come procedo?

    Grazie in anticipo, una volta che risolvo questo intoppo ho praticamente finito il programma!

    "Could be worse" -"Perhaps?"
    "Could be raining!"
  • Re: Disegnare in c#

    Diario del capitano, aggiunta al form precedente.
    Il problema è stato risolto, grazie per l'attenzione

    "Could be worse" -"Perhaps?"
    "Could be raining!"
  • Re: Disegnare in c#

    Se lo devi fare in c# usa la system.drowing
    che definisce al suo interno i strumenti come pen font
  • Re: Disegnare in c#

    Ciao ragazzi sapreste aiutarmi con un problema di internet explorer?
  • Re: Disegnare in c#

    <BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
    Ciao ragazzi sapreste aiutarmi con un problema di internet explorer?

    <hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->

    Se ha a che fare con il .Net Framework, penso di si, altrimenti dovresti postare nel canale più consono.

    Buone Feste

    SuperCap



    (Le risposte che lascio sono limitate alle mie conoscenze sull'argomento trattato. Quindi potrei anche sbagliare!)
  • Re: Disegnare in c#

    A proposito, vorrei migliorare la mia finestra di disegno in modo che se la modifico ( in dimensione) la curva si "adatta" ingrandendosi o riducendosi in proporzione.
    La mia idea era quella di ottenere le dimensioni della finestra per poi ricavare tutti i dati che mi interessano;
    poichè disegno direttamente sul form l'unica via che ho trovato è ottenere la Region che delimita il mio Graphics. (graphic.Clip() )
    Se disegno in un Panel ( a proposito, è possibile associare ad un Panel un oggetto tipo Graphics?) ed associo il Panel al Form le cose mi si semplificano?

    "Could be worse" -"Perhaps?"
    "Could be raining!"
  • Re: Disegnare in c#

    Il componente Panel ha anche il metodo CreateGraphics, quindi si puo usare questo oggetto.
    La cosa, non cambia assolutamente la gestione del ridimensionamento.
    Ciao.

    Buone Feste.

    SuperCap



    (Le risposte che lascio sono limitate alle mie conoscenze sull'argomento trattato. Quindi potrei anche sbagliare!)
  • Re: Disegnare in c#

    1 nn concordo con chi dice che il .net è tutto oggetti e ho buon motivo di affermare cio.
    2 visto che ho un problema simile mi passi il tuo codice per fare i disegni cosi' lo perfezziono e magari te lo ripasso?

    BINO
Devi accedere o registrarti per scrivere nel forum
13 risposte