• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#057 – Disegnamo all’interno di una UIView

By Francesco Burelli | on 25 Giugno 2010 | 1 commento
Senza categoria

Ciao a tutti in questo nuovo tutorial affronteremo un argomento molto utile che vi farà capire come funzionano, a grandi linee, le applicazioni di grafica in generale.

Per iniziare creeremo una semplice UIView che, non appena viene chiamato il metodo “drawRect:” disegna un triangolo, in seguito vedremo come è possibile potenziare la nostra view aggiungendo livelli di disegno, figure già definite etc.

Inizio subito col spiegarvi la UIView su cui disegneremo, lascio a voi il compito poi di posizionarla come e dove meglio credete.
La sottoclasse che vado a creare la chiamo DrawView, appena aggiunta al mio progetto Xcode, vedo che nel file di implementazione (.m) sono già presenti dei metodi, tra questi “drawRect:” è degno di nota poiché solo all’interno di questo bisogna inserire il codice per il disegno, in più ricordiamoci che questo metodo non deve mai essere chiamato direttamente, se vogliamo che venga eseguito possiamo chiamare “setNeedsDisplay” o “setNeedsDisplayInRect:”.

Passiamo ora alla spiegazione delle funzioni che costruiscono la grafica: sono le funzioni di CGPath.
CGPath è sostanzialmente un “percorso” e come tale si parte da un punto e si arriva ad un altro, ad oltranza. Il percorso quindi è fatto di linee che possono essere curve o rette. Una volta creato il nostro percorso potremo fare sostanzialmente due cose: chiudere la figura (unire l’ultimo punto col punto di partenza) e riempirla con un colore o scegliere di chiuderla o meno e disegnare solo i contorni della figura con delle linee colorate di spessore a piacere.
Per disegnare effettivamente una figura si usano le funzioni CGContext.

Passiamo al lato pratico e vediamo come disegnare il nostro triangolo:

        // creo la figura
        CGMutablePathRef p = CGPathCreateMutable();
	// mi posiziono nel primo punto
	CGPathMoveToPoint(p, NULL, 150, 150);
	// creo la linea
	CGPathAddLineToPoint(p,NULL,300,300);
	// un'altra
	CGPathAddLineToPoint(p,NULL,100,400);
	// chiudo la figura
	CGPathCloseSubpath(p);

	// ottengo il context per il disegno
	CGContextRef c = UIGraphicsGetCurrentContext();
	// aggiungo la mia figura creata prima (il triangolo)
	CGContextAddPath(c,p);
	// imposto il colore di riempimento della mia figura
	CGContextSetRGBFillColor(c,1,0,0,1);
	// chiudo la figura (se non è già stata chiusa) e la "riempio" di colore
	CGContextFillPath(c);

Spero il codice si commenti da solo, molto semplice ed intuitivo.

Ora, per provare a disegnare delle linee, creiamo il bordo della nostra vista (magari si potrebbe usare per definire una vista “selezionata”…):

-(void)drawBorder {
	// creo la figura
	CGMutablePathRef p = CGPathCreateMutable();
	// mi posiziono nel primo punto (0,0)
	CGPathMoveToPoint(p, NULL, 0, 0);
	// creo la linea superiore
	CGPathAddLineToPoint(p,NULL,self.bounds.size.width,0);
	// linea a destra
	CGPathAddLineToPoint(p,NULL,self.bounds.size.width,self.bounds.size.height);
	// linea in basso
	CGPathAddLineToPoint(p,NULL,0,self.bounds.size.height);
	// linea a sinistra (serve ? in teoria basterebbe usare una funziona che chiude la figura)
	CGPathAddLineToPoint(p,NULL,0,0);

	// ottengo il context per il disegno
	CGContextRef c = UIGraphicsGetCurrentContext();
	// aggiungo la mia figura (il bordo della view)
	CGContextAddPath(c,p);
	// imposto la larghezza della linea
	CGContextSetLineWidth(c,2);
	// imposto il colore della mia linea (o contorno della figura)
	CGContextSetRGBStrokeColor(c,0,1,0,1);
	// disegno la figura (in realtà il contorno della figura)
	CGContextStrokePath(c);
}

Il metodo deve necessariamente essere chiamato all’interno di “drawRect:” altrimenti non può funzionare, infatti nel mio progetto di esempio (link più sotto) questo metodo è privato.

Spero che il tutto vi sia abbastanza chiaro, se nutrite dei dubbi provate il mio progetto e scrivete nei commenti.

Nei prossimi tutorial scopriremo come strutturare in modo completo una view in modo che sia possibile facilmente aggiungere o togliere degli oggetti (figure) magari anche tramite il touch.

Share this story:
  • tweet

Tags: CGContextCGPathclassidrawRectFrancesco BurelliGrafica e DesignTutorial Pratici

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • FullControl: l’applicazione per il controllo remoto delle app sui nostri Mac [Contest all’interno]

    22 Aprile 2011 - 23 Comments
  • L#016 – Gestione della memoria: UIViewController, loadView e viewDidUnload

    29 Marzo 2011 - 1 Comment
  • TIPS#015 – Creare animazioni per i nostri oggetti in 3 passi

    26 Ottobre 2010 - 18 Comments

Author Description

One Response to “T#057 – Disegnamo all’interno di una UIView”

  1. 1 Luglio 2010

    Stewie

    Buongiorno,
    ma è possibile importare in xcode un file 3d realizzato con blender?
    Non riesco a trovare materiale del genere online!

    Grazie mille e complimenti per tt ciò che fate!!!

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO