Aquest tutorial introdueix el component Canvas (llenç) per crear gràfics simples de dues dimensions. Construiràs una aplicació que et permet dibuixar a la pantalla del telèfon amb diferents colors.
Nota històrica: PaintPot va ser un dels primers programes desenvolupats per demostrar el potencial de les computadores personals, tan enrere com en els anys 70.
Que estàs construint

Amb l’aplicació PaintPot pots:
- Mullar el dit al pot de pintura virtual per dibuixar amb el color seleccionat.
- Arrossegar el dit per la pantalla per dibuixar una línia.
- Prémer la pantalla per fer punts.
- Utilitza un botó per netejar la pantalla.
- Incloure una imatge com a fons del dibuix.
Aquest tutorial suposa que ja has completat el Tutorial HelloPurr amb l’emulador o el Tutorial HelloPurr amb el teu telèfon Android . El qual introdueix els següents conceptes de App Inventor:
- El component Canvas (Llenç) per dibuixar.
- Control de l’aparença de la pantalla amb components Arrangement (disposició).
- Control d’esdeveniments que prenen arguments.
- Variables
Abans de començar
Assegura’t que el teu ordinador i el teu telèfon estan preparats per utilitzar App Inventor, i navega fins al lloc web de App Inventor en beta.appinventor.mit.edu . Comença un nou projecte a la finestra del Dissenyador, i escriu com a títol PaintPot. Obre l’Editor de blocs, fes clic a Connect to Phone (connectar al telèfon), i assegura’t que el telèfon ha iniciat l’aplicació App Inventor.
Títol de la pantalla
Per començar cita en el panell Properties (Propietats) a la dreta del Designer (dissenyador) i canvia Title (títol) de la pantalla a PaintPot. Hauries veure aquest canvi al telèfon, amb el nou títol mostrat a la barra de títol.
Hi ha tres noms en App Inventor, i és fàcil confondre’ls:
- El nom que tries per al teu projecte mentre treballes al. Aquest serà també el nom de l’aplicació si la empaquetas per al telèfon.
- El nom de “Screen1” (pantalla1), que veuràs en en panell que enumera els components de l’aplicació. No pots canviar aquest nom en la versió actual de App Inventor.
- El títol (title) de la pantalla, el qual és el que veuràs a la barra de títol del telèfon. Aquest comença sent “Screen1”, que és el que vas usar en HelloPurr. Però pots canviar, com estàs fent per Paintpot.
Prepara els components
Usaràs aquests components per crear PaintPot:
- Tres botons per seleccionar pintura vermella, blava o verda i un altre botó per netejar el dibuix.
- Un Llenç (canvas), la superfície de dibuix. Aquest llenç té una imatge de fons, la qual és el gatet del tutorial HelloPurr. També pots dibuixar en un llenç en blanc. Aquest és només un llenç sense imatge de fons.
- També hi ha un component que no veus: utilitza un component HorizontalArrangement (disposició horitzontal) per alinear els tres botons de color.
Això fa cinc components en total. Tomemoslos i construïm l’aplicació.
Botons de color
- Arrossega un component Botó al visor i canvia l’atribut Text del botó a “Xarxa” (vermell) i el seu color de fons (BackgroundColor) a vermell.
- Fes clic a Button1 en la llista de components del visor per ressaltar (ja hauria d’estar ressaltat) i utilitza el botó Rename … per canviar el seu nom de Button1 aButtonRed.
- De la mateixa manera, crea dos botons per al blau i el verd, truca’ls ButtonBlue i ButtonGreen, col·locant verticalment sota el botó vermell.
Així és com això hauria d’aparèixer en el dissenyador, amb els tres noms dels botons en la llista de components del projecte. En aquest projecte estàs canviant els noms dels components millor que deixant els seus noms per defecte, com vas fer en HelloPurr. Utilitza noms significatius en els teus projectes els fa més fàcils de llegir per a tu mateix i per altres.

També hauries de veure els tres botons a la pantalla del telèfon.
Aparença amb Disposició de pantalla (Screen Arrangemen)
Ara has de tenir tres botons, un sobre l’altre. El següent pas és alinear horitzontalment. Faràs això usant un component HorizontalArrangement (disposició horitzontal).
- Des de la categoria Screen Arrangement de la paleta, arrossega un component HorizontalArrangement i col·loca sota els botons. Canvia el nom d’aquest component de HorizontalArrangement1 a ThreeButtons
- Al tauler Properties (Propietats), canvia Width (ample) de ThreeButtons a Fill Parent … pel que omplirà per complet l’ample de la pantalla.
- Mou els tres botons dins del component HorizontalArrangement. Nota: Veuràs una línia vertical que mostra on anirà la peça que aquestes arrossegant.
Si mires la llista de components del projecte, veuràs els tres botons inclosos sota ThreeButtons per indicar que són ara els seus subcomponents. Fixa’t que tots els components estan inclosos sota Screen1.

També has de veure els teus tres botons alineats en una fila a la pantalla del telèfon, encara que algunes coses no apareguin exactament com en el Dissenyador. Per exemple, la vora de la disposició (Arrangement) es mostra en el Dissenyador però no en el telèfon.
Generalment, usaràs la disposició de pantalla per crear simples dissenys verticals o horitzontals. Pots crear dissenys més complexos niant components de disposició de pantalla. Existeix a més un component Disposició de Taula TableArrangement.
Llenç i botó de neteja
Els dos components finals són el llenç (canvas) i el botó de neteja.
- Des de la categoria Basic de la Paleta arrossega un component Llenç (Canvas) al Visor. Canvia el seu nom a DrawingCanvas. Estableix l’atribut Width (ample) a Fill Parent Estableix l’atribut Height (alt) a 300 píxels.
- Afegeix un imatge de fons (Background Image) al llenç. Feu clic al camp conté None … al costat de BackgroundImage al panell de Propietats de la tela Pots utilitzar el mateix arxiu kitty.png, si encara el tens a l’escriptori d’un tutorial anterior. O pots usar una altra imatge.
Pots usar qualsevol imatge que vulguis, però obtindràs millors resultats si la mida de la imatge (en píxels) s’aproxima a la mida que mostressis al telèfon. A més, imatges grans poden trigar més temps a carregar-se, i poden excedir la quantitat de memòria que el telèfon assigna per les aplicacions.
- Des de la Paleta, arrossega el botó final a la pantalla, col · locant-sota el llenç. Canvia el seu aneu a ButtonWipe Canvia el seu atribut Text a Wipe.
Ara hauràs completat els passos per configurar l’aparença de la teva aplicació. Així és com hauria d’aparèixer en el Dissenyador. A continuació, definiràs com es comporten els components.
Afegeix comportaments als components
L’Editor de blocs deu ser ja obert. Primer configura els botons que canvien el color de la pintura.
Afegeix controladors d’esdeveniments de botó
En l’Editor de blocs:
- Canvia a la columna My Blocks.
- Obre el calaix de ButtonRed i arrossega fora el bloc
when ButtonRed.Click. - Obre el calaix DrawingCanvas. Arrossega fora el bloc
set DrawingCanvas.PaintColor to(hauràs de desplaçar la llista de blocs del calaix per trobar-lo) i col · loca-en la secciódo(fer) dewhen ButtonRed.Click. - Canvia a la columna Built-In. Obre el calaix Colors, arrossega el bloc per al color vermell i col·loca-ho en set DrawingCanvas.PaintColor to.
- Repeteix els passos del 2 al 4 per als botons blau i verd.
- L’últim botó de configurar és el de neteja Wipe. Canvia de nou a la columna My Blocks. Crea un controlador d’esdeveniment clic per ButtonWipe arrossegant
when ButtonWipe.Clickdes del calaix ButtonWipe. Des del calaix DrawingCanvas, arrossegacall DrawingCanvas.Cleari col · loca-a l’àreadodel blocwhen ButtonWipe.Click.
Els blocs per als botons han ser així:
Afegeix controlador d’esdeveniment tocar
Ara per al següent pas: dibuixar en el llenç. Organitzaràs les coses perquè quan toquis el llenç, aconsegueix algun punt en el lloc on tocs. I si arrossegues el dit lentament pel llenç, es dibuixi ua línia.
- En l’Editor de blocs, obre el calaix de la tela (canvas) i arrossega el bloc
when DrawingCanvas.Toucheda l’espai de treball.
Així que deixis anar fora el bloc, els tres buits de la dreta s’ompliran automàticament amb blocs de noms anomenats x, i, i touchedSprite.
Ja hem vist esdeveniments de botó clic. Els clics són simples, perquè no hi ha res de saber sobre el clic que no sigui que ha succeït. Altres controladors d’esdeveniments, com ara when ... Touched, necessiten informació sobre l’esdeveniment. En App Inventor, aquesta informació s’expressa com el valor delsarguments relacionats amb el controlador d’esdeveniments. Per l’esdeveniment when ... Touched els dos primers arguments representen les coordenades x i i d’on va succeir el toc.
Per aquest esdeveniment tocar, fes al llenç dibuixar un petit cercle al punt amb les coordenades x, i.
- Arrossega fora una ordre
call DrawingCanvas.DrawCircledes del calaix canvas i col·loca-en la secciódodewhen DrawingCanvas.Touched.
A la part dreta de when DrawingCanvas.DrawCircle hi ha tres connexions on has d’especificar els valors per x i i on s’ha de dibuixar el cercle i r, el qual és el radi del cercle.
Per x i i, utilitzarà els valors dels arguments proporcionats pel controlador Touched:
- Obre el calaix My Definitions a la part superior de la columna. Busca els blocs per value x i value y. Els blocs es crearàn automàticament quan s’arrossegui el bloc del controlador d’esdeveniment tocar.
- Arrossega
value xivalue yconéctalos en els seus llocs corresponents al blocwhen DrawingCanvas.Touched. Assegura’t d’arrossegar els blocs devalueno els que corresponen aname, són molt similars.
També necessitaràs especificar el radi del cercle de dibuixar. Cinc (píxels) és un bon valor per a aquesta aplicació:
- Fes clic en una àrea buida del la pantalla perquè aparegui el menú activable i selecciona matemàtiques math (verd). Selecciona 123 de la llista desplegable, per crear un bloc número. Canvia el 123 a 5 i conéctalo al buit per al radi.
També pots sol escriure 5 seguit de Intro, per crear un bloc amb el valor 5. Això és un exemple de typeblocking: si comences a escriure, l’Editor de blocs mostra uns llista de blocs els noms coincideixen amb el que aquestes escrivint, si prems un nombre crearà un bloc número.
Així és com s’hauria de veure el controlador d’esdeveniment tocar:
Prova el que has fet fins ara al telèfon. Toca un botó de color. Ara toca el llenç, i el dit de deixar un punt a cada lloc que tocs. Prement el botó Wipe has netejar el teu dibuix.
Afegeix Esdeveniments d’arrossegament
Finalment, afegeix el controlador d’esdeveniment d’arrossegament. Aquesta és la diferència entre tocar i arrossegar:
- Un toc és quan poses el dit en el llenç i el lleves sense moure’l.
- Un arrossegament és quan és quan poses el dit en el llenç i mous el dit mentre el mantens en contacte.
Quan arrossegues el dit per la pantalla, sembla dibuixar una gran línia corba per on mous el dit. El que realment fas és dibuixar centenars de petites línies rectes: cada vegada que mous el dit, fins i tot molt poc, estens la línia des de l’última posició del teu dit a la nova posició.
Un esdeveniment d’arrossegament té 6 arguments. Aquests són tres parells de coordenades x i i que mostren:
- La posició anterior del teu dit on va començar l’arrossegament.
- La posició actual del teu dit.
- La posició immediatament anterior del teu dit.
També hi ha un sprite, el qual ignorarem en aquest tutorial.
Ara fes que arrossegar dibuixi una línia entre la posició prèvia i l’actual creant un controlador d’arrossegament:
- Des del calaix DrawingCanvas, arrossega el bloc
when DrawingCanvas.Draggeda l’espai de treball. - També des del calaix DrawingCanvas, arrossega el bloc
call DrawingCanvas.DrawLineal buitdo(fer) del bloc when DrawingCanvas.Dragged. - Feu clic al calaix My Definitions. Has de veure els blocs per als arguments que necessites. Arrossega els blocs de value (valor) corresponents als buits apropiats en
when DrawingCanvas.Dragged: x1 i y1 han de ser prevX i prevY; x2 i y2 han de ser currentX i currentY
Aquí està el resultat:
Prova el teu treball al telèfon: arrossega el dit per la pantalla per dibuixar línies i corbes. Toca la pantalla per crear punts. Fes servir el botó Wipe per netejar la pantalla.
Revisió
Aquí hi ha algunes de les idees vistes en aquest tutorial:
- Pots utilitzar components de Disposició de pantalla (Screen Arrangement) per especificar l’aspecte en lloc de col · locar els components un sobre l’altre.
- El component Canvas et permet dibuixar al. Aquest a més sent els tocs i arrossegaments.
- Alguns controladors d’esdeveniments són anomenats amb informació sobre l’esdeveniment, com les coordenades d’on s’ha tocat la pantalla. Aquesta informació està representada per arguments. Quan selecciones un controlador d’esdeveniment que té arguments, App Inventor crea blocs de
valueper aquests i els col·loca al calaix My Definitions.
A la Part 2 , veuràs com utilitzar variables globals per crear punts de diferent grandària.






















