Crear una aplicación de dibujo similar a MS Paint con Tkinter | Jayanta Sarkar | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Crear una aplicación de dibujo similar a MS Paint con Tkinter

teacher avatar Jayanta Sarkar, Behind the Code: Jayanta Sarkar

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      INTRODUCCIÓN

      3:02

    • 2.

      Creación de la composición de esta aplicación

      10:49

    • 3.

      Agregar el deslizador de tamaño del pincel en la parte inferior

      4:11

    • 4.

      Construir la función para dibujar

      10:28

    • 5.

      Trabajar en la función de color de la pintura y el deslizador de tamaño del pincel

      7:49

    • 6.

      Trabajar sobre la función para dibujar diferentes formas geométricas

      7:43

    • 7.

      Trabajar en el botón guardar y borrar

      12:02

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

4

Estudiantes

--

Proyectos

Acerca de esta clase

¡Te damos la bienvenida a este tutorial completo de proyecto Python Tkinter! En el video de hoy, crearemos una aplicación de lienzo para dibujar totalmente funcional con Tkinter. Este proyecto es perfecto para estudiantes principiantes e intermedios de Python que quieran entender el manejo de eventos, los widgets de GUI, el dibujo de lienzo, las formas, los deslizadores y el guardado de imágenes.

Al final del video, tendrás tu propia aplicación de dibujo similar a MS Paint con pinceles de tamaño, colores, formas, y funciones de guardo y borrado personalizadas.

Conoce a tu profesor(a)

Teacher Profile Image

Jayanta Sarkar

Behind the Code: Jayanta Sarkar

Profesor(a)

Jayanta Sarkar is a dedicated Python programmer and full-stack web developer with a passion for creating dynamic and interactive web applications. With a robust background in both front-end and back-end development, Jayanta excels in building seamless user experiences and efficient, scalable systems.

Over the years, Jayanta has honed his skills in various programming languages and frameworks, making him proficient in technologies such as JavaScript, CSS, HTML, and MySQL. His expertise extends to developing comprehensive solutions that integrate sophisticated database management with intuitive user interfaces.

Jayanta's journey in the tech industry is marked by a continuous drive to learn and adapt to new technologies. He has developed and published several successf... Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación Python
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. INTRODUCCIÓN: Hola, me alegro de verte de vuelta. Una vez más, estoy de vuelta con un nuevo proyecto relacionado con la aplicación Kinder GY Y hoy en este proyecto, vamos a construir la app Advanced drawing Canvas. Entonces, sin perder el tiempo, permítame mostrarle la demostración de lo que hoy vamos a construir en este proyecto. Como puedes ver en tu pantalla, tenemos ventana. Ahora, en esta ventana, tenemos un lienzo. Si trato de dibujar algo, ya ves, podemos dibujarlo. Podemos dibujar cualquier forma con la mano libre, necesitamos presionar el botón del mouse y arrastrar el mouse. Si quieres cambiar el tamaño del pincel, sí, puedes. Si quieres reducirlo, solo si lo hago uno y trato de trazar una línea, puedes ver el grosor de este pincel, y si quieres aumentarlo, sí, también puedes. Si lo hago estaño y trato de trazar una línea, se puede ver. Puedes dibujar forma en mano libre, puedes cambiar el tamaño del pincel. Además si quieres cambiar el color del pincel, sí, puedes. Desde aquí, puedes cambiar el color a cualquier color. Supongamos que si pizarra verde uno, e intento dibujar la forma, se puede ver el resultado. Nuestro programa es permitirnos cambiar el color, además nos permiten dibujar mano libre. Además, si quieres dibujar línea, simplemente haz clic en el botón Línea y podrás dibujar cualquier línea con cualquier grosor. Si cambias el tamaño del pincel, se reducirá el grosor de esta línea. De la misma manera, puedes dibujar cualquier rectángulo. También puedes dibujar círculo. Además, nuestro programa te permite borrar alguna porción si seleccionas el botón de borrar, y si mueves el mouse alrededor de él, y si cambias el tamaño del pincel y mueves el mouse alrededor de él, puedes verlo eliminar las líneas de Pincel. Actúa como goma de borrar. Solo ven botón claro. Si quieres despejar la ventana de una vez, solo tienes que pulsar sobre borrar. Se despejará toda la ventana. Y por fin tenemos botón de ajuste. Entonces para dibujar algo, supongamos que dibujo una línea y quiero establecer esta imagen, entonces hay que pasar el botón set. Se abrirá una ventana Sabas, y desde aquí, se puede configurar el archivo como formato PNG, como si lo hago Entonces si hago nuestro nombre de archivo Demo dos y luego configuro el archivo, establece el archivo en esa carpeta en esa carpeta en particular, también después de establecer el archivo, envía unas masas exitosas, guardar acertadas. Con eso se muestra la ubicación del archivo guardado. Esto es lo que vamos a ser hoy en este proyecto. Es bastante avanzado el dibujo de Canvas porque tenemos controles. Tenemos controles sobre el tamaño del cepillo. Tenemos controles sobre color, mano libre, podemos dibujar líneas, podemos dibujar rectángulos, circuitos, tenemos goma de borrar para borrar También tenemos botón de lágrima para despejar todo el campo a vez y también podemos guardar la imagen del lienzo. Esto es exactamente lo que pagamos hoy en este proyecto. Sin perder el tiempo, saltemos al editor de código de visult studio 2. Creación de la composición de esta aplicación: Entonces finalmente, en los cuchillos Min son coordinadora de estudio. Al principio, necesitamos importar los módulos importantes como kinter, hoser de color, diálogo de archivo, caja de líos y módulo de almohada Entonces al principio, voy a Importar Kiner como TK. Después de eso, desde Kinter voy a ingresar archivo selector de color y cuadro de líos Así que aquí, voy a escribir desde Kinterimport, selector de color, diálogo de archivos y cuadro Después de eso, para capturar la captura de pantalla completa, desde el módulo Pillow, voy a importar captura de imágenes. Aquí voy a escribir desde PIL Import image grab. Después de importar el módulo necesario, voy a crear la ventana principal. Al principio, voy a crear un objeto usando la clase TK y nuestro nombre de objeto es root. Entonces voy a agregar un título a esta clase de empate. Él escribe, título de punto raíz, Dibujo avanzado Lienzo. Entonces voy a salvar la geometría. Voy a escribir od dot Geometría 900 por 650 pixel. Este es nuestro tamaño de ventana. A continuación, voy a establecer un color de fondo a toda nuestra ventana tipo root dot config, fondo, este color grick claro Entonces voy a ejecutar la aplicación usando Min Loop. Aquí voy a escribir root dot main loop, y voy a configurar este archivo. Aquí creamos nuestra ventana básica simple. Además, definimos la geometría, 900 650 píxeles. Después de crear la ventana principal, necesitamos configurar la interfaz de usuario. Aquí estoy tecleando una configuración de interfaz de usuario única y de comando. Y voy a definir un lienzo. Primero, voy a definir un lienzo. Aquí voy a escribir nuestro nombre variable canvas, Canvas igual a pkt Canvas y colocamos el lienzo dentro de la ventana raíz, nuestro lienzo color de fondo es blanco puro, y definimos con 850 y altura 500 Entonces utilizo este estilo de borde elevado de borde y uso borde con dos píxeles. Entonces tenemos que empacar este lienzo. Aquí voy a escribir método Canvas dot PAC de las Ss y YxS aquí asignamos diez pixel tying Después de eso, en este Canvas, voy a asignar algunos eventos de enlace del mouse como botón un botón un movimiento, liberación de botón, etcétera Aquí, voy a escribir un solo comando en eventos de enlace y primero mu tipo Canvas método de enlace de punto Canvas, bind. Entonces dentro de los buses redondos, aquí, dentro de los códigos dobles, voy a escribir nuestro efecto de encuadernación rápida Botón uno, y va a activar una función, y nuestro nombre de función es start, underscoe, draw, start, draw Y como saben, aquí no definimos la función, por lo que necesitamos crear la función. Entonces aquí, estoy tecleando una sola y funciones de comando, y arriba en eso aquí voy a definir la función start draw, algún tipo DF y nuestro nombre de función es start, underscoe Y como saben, es una función basada en eventos, así que voy a pasar el eVetF ahora dentro de esta función, aquí, voy a escribir pass. Eso es. A continuación, voy a usar otra encuadernación de ratón. Así t, Lona punto bind. Esta vez nuestra etiqueta de evento es B one motion. Como saben, se refiere al evento del mouse que se activa cuando el usuario mueve el mouse mientras mantiene presionado el botón de elevación. Quiero decir el botón uno. Si hago clic en el botón uno y empiezo a mover mi cursar dentro del área del lienzo, va a dibujar de acuerdo a la posición del mouse Ya sabes que el botón uno significa clic tardío. Nuevamente, necesitamos definir ese dibujo de función en nuestra sección de funciones. Entonces aquí, voy a probar Dave nuestro nombre de función es dibujar. Además, es una función basada en eventos, algún tipo de evento. Entonces dentro de la función por ahora tipo Imo, pasar. Eso es. Nuestra siguiente acción es para liberación de botones, Así tipo, Canvas dot bind, botón soltar uno. Encuadernación de punto de lona, botón de liberación uno. Es malo si solto mi garrapata de vuelta en nuestra lona, entonces va a dejar de dibujar. Así que tenemos que definir la función de stop draw. Entonces copio el nombre de la función, y nuevamente, soy tipo. Dave, el nombre de nuestra función es stop draw. Es un evento basado en funciones para pasar evento. Y aquí, voy a escribir pass dentro de él, y voy a configurar este archivo. Estas son las principales e importantes encuadernaciones de ratón que necesitamos para trazar la línea de lo contrario, cualquier forma en nuestro lienzo. Ahora, vamos a configurar el archivo y ejecutar el código en nuestro terminal y ver cómo se veía. Por ahora, se ve así. Tenemos un área de lienzo donde vamos a dibujar nuestras formas o líneas, lo que sea. Entonces tenemos un espacio. En ese espacio, voy a poner todos los botones necesarios, como botón de pantalón de color, botón mano de tarifa, rectángulo de línea, círculo, cursor, borrador de círculo, claro, y botón de guardar Con eso, necesitamos un conjunto de deslizadores para seleccionar el tamaño del pincel. Básicamente, vamos a crear primero una herramienta wor. Para eso, voy a tomar un marco para la torre. Volvamos al abrigo y aquí, voy a definir un marco. Aquí voy a definir el marco Tolar. Entonces primero, voy a crear la barra de herramientas de herramientas igual al método de marco de punto de barra de herramientas. Dicho igual a t punto clase de marco y colocamos el marco dentro de la ventana raíz. Dijimos color de fondo, este color de fondo exactamente al fondo de la ventana. Entonces tenemos que empacar esta barra de herramientas. Entonces aquí, voy a escribir el método polar dot pack, llenamos esta barra de herramientas en XX y agregamos algo de relleno en xs. Entonces uno por uno, voy a crear botones para esta barra de herramientas, que voy a poner dentro de esta barra de herramientas. Voy a escribir el single y comando y aquí, voy a escribir el botón T dt, clase botón TK, y dentro de los vestidos redondos, voy a colocar el botón dentro de la barra de herramientas. Barra de herramientas, y por ahora, voy a decirlo botón texto, texto, igual a nuestro primer texto es para elegir el color. Entonces aquí, voy a escribir. Entonces este botón es para el color. Entonces aquí, voy a atar color con este icono. Y por ahora, no voy a usar la palabra clave command porque vamos a hacer eso cuando paso a paso, voy a crear estas funciones. Entonces por ahora, no voy a usar el parámetro command. Entonces coma, voy a poner el fondo. G, fondo, y voy a decir fondo dentro de los códigos Dule. Este color. Este color azul claro. Entonces voy a decir por tierra para FG, tipo FGF cuatro tierra, voy a usar blanco Entonces en lugar del doble código estoy tipo color blanco. Después de esa coma, la siguiente opción voy a usar W. voy a definir con botón con, luego luego voy a empacar este botón Entonces aquí voy a escribir punto PAC Método. Empaca dentro de la desnudez. Primero, voy a definir el sitio lateral. Voy a colocarlo en lado izquierdo izquierdo, y voy a agregar algo de relleno en X xs, eso es todo. Voy a establecer este archivo. Aquí creo un solo botón. la misma manera, necesitamos crear múltiples botones para la opción de barra de herramientas múltiples. Entonces voy a duplicar esta sección y nuestro siguiente botón es para estilo de mano libre. Aquí voy a cambiar el texto del botón y el logo y lo voy a poner a mano alzada Entonces voy a cambiar el color de fondo de este botón. Entonces voy a cambiar el color de fondo aquí voy a reemplazar el color con este código de color, este color grisáceo, y no necesito este primer plano, así que voy a quitar la misma manera, agrego otro botón para línea para dibujar la línea. Si selecciono este botón, nos va a permitir trazar línea recta. Y si seleccionamos mano libre, entonces nos va a permitir dibujar cualquier cosa. Podemos trazar línea recta curva lo que sea. Después creo otro botón para rectángulo. Nos va a permitir dibujar forma de rectángulo. Después de eso, creo otro botón para círculo. A continuación, se crea un botón para borrador. Si seleccionamos ese botón, entonces somos capaces de eliminar cualquier cosa que dibujemos en nuestro lienzo. Después de eso, creo otro botón para auto. Si presiono ese botón, va a limpiar toda el área del lienzo. En una sola camarilla. Para configurar el archivo de dibujo, voy a crear el último botón para Guardar. Aquí defino otro botón para guardar con el icono Guardar. Aquí definimos total ocho botón para color para mano libre, para línea, para rectángulo, para círculo para borrador, rasgar y guardar y alineamos todo el botón en el lado izquierdo Como puedes ver cuando empaco este botón, definimos el lado igual a APT. Va a alinear el botón al lado izquierdo de la barra de herramientas. Ahora, fijemos el archivo y ejecutemos el código en nuestra terminal. Después de configurar este archivo, si ejecuto este código en nuestro terminal, ahora puedes notar que tenemos los botones. Tenemos botón de color, tenemos botón de mano libre, línea, rectángulo, círculo, goma de borrar, muelles Entonces después de eso, necesitamos crear un control deslizante. Necesitamos crear un control deslizante para establecer el tamaño de latón. Podemos definir el tamaño del pincel. Si quieres un cepillo grueso, entonces puedes deslizar hacia arriba el deslizador y establecer tu propio tamaño de latón. Pero no voy a hacer eso en este tutorial. Ya se ha vuelto demasiado largo, así que voy a hacerlo en el siguiente tutorial. Muchas gracias. Estén atentos para nuestro próximo tutorial. 3. Agregar el deslizador de tamaño del pincel en la parte inferior: Hola, chicos. Me alegro de verte de vuelta. Esta es la segunda parte de este tutorial, y en esa sección, vamos a crear un slider, y voy a agregar el slider abajo de esta ventana. Vamos a crear ese deslizador para definir el tamaño del latón. Entonces primero, voy a escribir un sencillo en comando, escala de talla de sujetador. Y para crear este slider, vamos a tomar un frame. Entonces aquí, voy a escribir size frame igual a T dot frame class, y lo colocamos en una ventana raíz y el color dground es gris claro Después de eso, después de eso, voy a empacar este marco de tamaño. A continuación, voy a tomar una etiqueta, y voy a definir el texto. Stick it out label, y coloco esta etiqueta dentro este marco y nuestro texto de etiqueta es de tamaño latón. Ahora, definamos el control deslizante después de eso. Aquí voy a escribir, pincel, subrayado, deslizador. Deslizador de pincel igual a la clase de escala de puntos T. Entonces dentro de los bruss redondos voy a pasar el marco de tamaño Al principio, voy a poner este deslizador en el frame size size frame, luego apo coma en nuestro parámetro firme a partir de subrayado, voy a configurarlo uno Voy a iniciarlo desde uno. Y luego voy a ampliar hasta dos parámetros, voy a configurarlo 20. A continuación, necesitamos definir la orientación y quiero deslizador horizontal. Además, voy a definir la longitud de este deslizador, tipo longitud 200. Por ahora, no voy a poner el comando porque uno por uno, voy a definir esa función más adelante. En esa sección, solo trato de enfocarme en el diseño de UI. Después de eso, voy a establecer un valor a nuestro control deslizante y nuestro valor predeterminado es tres. Escribo latón slider dot set y dentro de las rondas dentro del método set, paso tres valor. Entonces nuestro tamaño predeterminado de Pincel es tres. Después golpeamos para empacar el control deslizante. Así que aquí están tus slider dot Pack método y lo presiono en el lado de profundidad. También, defino algunos emparejamientos en Xxs diez píxeles. Y voy a poner este archivo. Para configurar este archivo, enumere el código en ningún terminal y vea cómo se ve nuestro diseño de interfaz de usuario. Entonces, para ejecutar este código sin terminal, ahora puedes ver así es como se ven nuestros botones, nuestro marco y nuestro deslizador. Ahora voy a definir algunas variables globales, y todas estas son variables globales importantes. Entonces en la parte superior, antes de las funciones, antes de la sección de funciones, aquí, voy a definir algunas variables globales. Escribo un solo comando variables globales. Al principio, voy a definir el color rosa predeterminado, y lo voy a poner en negro. Tipo color rosa, igual al negro. Después de eso, voy a definir el tamaño del latón. Entonces tipo, tamaño de latón igual a tres. Tamaño de latón define y ancho de trazo, y por defecto, quiero seleccionar la herramienta actual a mano alzada Así podemos dibujar cualquier forma usando nuestro ratón. Entonces, para escribir la melodía actual igual a mano libre. Después de eso, voy a definir otras dos variables a la vez, X xs e Y xs. Quiero decir empezar huevos y empezar Y. Así que decir que inicia huevos y empieza Y igual a monja y ninguno Dije tanto el Valuun porque porque esta variable va a recordar donde nuestro ratón fue elogiado A continuación, voy a definir otra variable global, que es la revisión de formas. Revisión de forma igual a ninguna. Esta variable almacenó temporalmente la forma de vista previa mientras se arrastraba Mientras arrastramos nuestro cursor en nuestro marco, entonces va a recordar pero la forma temporalmente. Esto es para este tutorial. En el siguiente tutorial, vamos a trabajar en las funciones. Gracias por ver este video, mantente atento para nuestro próximo tutorial. 4. Construir la función para dibujar: Me alegro de verlos de vuelta, chicos. Esta es otra parte de este tutorial, y en esa sección, vamos a centrarnos en las funciones, la función básica que nos permite dibujar en nuestro lienzo. Como pueden ver aquí aplico algún método bind en nuestro lienzo, como el botón uno, luego el botón uno movimiento, y el botón suelte uno. Al principio, necesitamos trabajar en este método, iniciar, dibujar. Llamó a la función. Llamé cuando se pulsa el botón del ratón sobre el lienzo. Entonces, si hago clic en este lienzo, va a ejecutar una función, y nuestro nombre de función es start draw. También va a registrar las coordenadas iniciales para el dibujo. Entonces en esta función, primero, voy a usar la palabra clave global Global, y voy a hacer estas dos variables globales, iniciar a y comenzar Y. Por defecto, dije el Voluun y aquí voy a hacerla variable global A continuación, necesitamos asignar el valor exacto de posición del cursor que obtenemos del método bind. Quiero decir, evento y evento Y. Así que aquí están type, start X coma, start Y, start Y igual a su type event X y event Y. Usando la palabra clave global, sobrescribimos el valor de la variable con el evento XNOY X y el valor del evento Pero antes de comenzar a trabajar en la función de dibujo, la función de dibujar, necesito trabajar en la herramienta set, selector de color, y cambiar la función brushiz Al principio, voy a trabajar en la función set tool. Por defecto, como pueden ver, aquí utilizo herramienta actual, mano libre, pero necesitamos crear una función que nos va a permitir apretar entre cualquier herramienta como mano libre, rectángulo, círculo, goma de borrar, lo que sea Entonces aquí voy a definir otra función y voy a dar propina a Dave set tool. Luego dentro de esta función, voy a resplandor la variable de herramienta actual, herramienta actual, y luego digo herramienta actual igual a herramienta. Entonces, sea cual sea el valor que pasemos en esa función, se va a establecer como herramienta actual. Supongamos, Supongamos botones en nuestros botones, quiero configurar estos botones aquí llamo SetolFunction, y configuro la herramienta de acuerdo con el Para lágrima, quiero establecer para goma de borrar, quiero poner borrador etcétera. Entonces según el botón, setol función va a configurar las herramientas Ahora voy a llamar a la función settle en nuestros botones. Entonces saltemos al botón. Y para la mano libre, como para el botón de mano libre, quiero llamar a mano libre. Aquí usa la función Lambda one liner. Como sabes para llamar a esta función en ese botón, necesitamos usar el parámetro de comando. Después de definir el texto aquí voy a usar el comando Hemlotype Comando, comando igual a dos, y voy a usar una función lineal Lambda porque necesitamos establecer argumento con esa función. Por eso voy a usar la función Lambda. Algún tipo Lambda y quiero llamar set tool function, set tool. Éste. Entonces dentro de las vidas dentro de los códigos dobles, voy a escribir mano libre. Copia texto a mano libre, y voy a pegarlo aquí. Y voy a hacer lo mismo por la lima. Aquí copio el comando y lo pego aquí, entonces voy a sustituir la mano libre por lima. Entonces hago lo mismo por el rectángulo, también para el circulo y para el borrador En nuestros cinco botones, línea de mano libre, rectángulo, círculo y borrador, utilizamos la función set tool lo que pase en esa función, va a configurarla herramienta actual. Como sabes, por defecto, nuestra herramienta actual es a mano alzada Entonces si el usuario presiona este botón, el botón de línea, entonces va a establecer la línea de valor carental Ahora, vamos a trabajar en el evento del sorteo. Como saben, esta función se llama cada vez que el ratón mueve mientras el botón lebed se mantiene presionado. Porque en nuestro evento, usamos B one motion, y como ustedes saben, nuestro incluso nos da información sobre la posición actual de nuestro mouse, como y YxS de nuestro cursor Ahora, dentro de esta función, necesitamos hacer globales nuestras variables importantes, como inicio X, inicio Y y vista previa de forma. Hacemos que esta variable sea global. Y ahora voy a establecer siguiente voy a establecer condición I en esta función en esta función de dibujo. Aquí, voy a escribir I herramienta actual en mano libre y borrar significa si alguna de las condiciones es verdadera, entonces dentro de esta condición IP, por defecto, como ustedes saben, seleccionamos a mano alzada y necesitamos hacer esta letra minúscula, libre y también línea en letra pequeña, De lo contrario, va a tirar flecha porque para otros argumentos, usamos letra minúscula. Por eso utilizo letra minúscula para estas dos variables. Si nuestro Carintulin mano libre de lo contrario borrador, entonces dentro de esta condición primero, voy a Color, color, voy a establecer color blanco. Dentro de las canchas de la puerta, dije el color. Ahora podrías tener porción. ¿Por qué uso el color blanco? Porque ya dije color predeterminado negro, entonces ¿por qué uso el blanco? Como pueden ver, aquí veo una condición si nuestra herramienta actual en mano libre de lo contrario borrador Si es una goma de borrar, entonces necesitamos quitar la línea Tenemos que quitar nuestro dibujo. Para eso, necesitamos pintura de color blanco porque nuestro color de fondo de lienzo es blanco, color borrador sumergido con Por eso dije el color blanco y con eso, si herramienta actual igual a igual a borrador, si herramienta actual igual a igual a borrador, dolor Esto aunque va a definir I herramienta actual es goma de borrar, luego usar color blanco, Ls usar color dolor Como saben, por defecto decimos el pin de color negro. Por defecto, va a dibujar las formas en color negro. A continuación, necesitamos usar Canvas dot CreateineFunction Entonces en la siguiente línea voy a escribir, Canvas, Canvas punto crear línea, subrayado línea Crear línea es el método invald de la introducción. Luego dentro de la ress redonda primero, necesitamos definir la posición x de inicio. Entonces necesitamos definir la posición Y de inicio, luego toma de evento y posición de evento y. Aquí un empate, iniciar X, iniciar X, luego iniciar Y, iniciar Y. Después de eso, necesitamos pasar las tomas de evento y el evento Y. Punto del evento X, y las coordenadas del evento Y. Coordenadas Y del punto del evento. Nuestro primer valor dos es para X uno e Y una posición, y nuestro segundo valor dos es para X dos e Y dos posiciones. Posición de nuestro cursor. Después de eso, voy a decir el color de relleno, algún tipo, se siente igual a coloreado. Entonces voy a decir, con del pincel, algún tipo, ancho, y aquí voy a usar el valor del tamaño del pincel, pincel, tamaño, este. Y como saben, por defecto, establecemos el tamaño de pincel tres. Después de eso, coma, necesitamos establecer el estilo de gorra. Algún tipo estilo gorra, punto T redondo. Ahora la pregunta es ¿por qué uso el estilo de gorra para redondear? Porque hace que el final de la línea sea suave y redondo. También, voy a hacer suave igual a verdad. Nos va a permitir trazar líneas suaves. Va a permitir hacer que la línea de bordillo sea más suave. Ahora, cada vez que movemos el ratón, una línea, una pequeña línea conectamos la posición anterior y nueva del ratón. Visualmente, formando un trazo continuo. Después de eso, también necesitamos actualizar las coordenadas. Es así que no empiezo X e inicio Y igual al evento X y evento Y. ¿Por qué necesitamos actualizarlo? Porque aquí actualizamos la posición anterior para el siguiente segmento. La siguiente línea continúa sin problemas, y voy a configurar este archivo. Ahora, después de configurar este archivo, si ejecuto este código en mi terminal, aquí puedes ver nuestra área de canvas. No voy a seleccionar ningún botón porque si selecciono algún botón, si presiono algún botón, va a cambiar la condición. Entonces la mano libre se convierte en otra cosa, como línea, rectángulo, por lo demás circulo No voy a presionar ningún botón. Voy a empezar a dibujar en nuestra área de lienzo. Si presiono mi mouse en esta área del lienzo y empiezo a dibujar, puedes ver las líneas. Dibujamos con éxito las líneas. También un para soltar mi mouse, dejó de dibujar. Como saben, por defecto, establecemos pin color negro. Pero si presiono el botón del borrador, voy a presionar el botón del borrador Ahora se establece pin de color blanco. Entonces si trato de quitar esta línea, así que si arrastre el mouse sobre ella, ya se puede ver la línea ahora dibuja con color blanco. Por eso nuestras líneas se sumergen con el color de fondo. Ahora nos da un efecto de borrar porque nuestro color de fondo es el blanco Por ahora, esto es para este tutorial. En la siguiente parte de este tutorial, aprenderíamos cómo podemos cambiar el color del dolor. Además, vamos a aprender cómo podemos activar nuestro botón de carro para car la imagen. Gracias por ver este video Stune para nuestro próximo tutorial 5. Trabajar en la función de color de la pintura y el deslizador de tamaño del pincel: Hola, y bienvenidos de nuevo a otra conferencia sobre este proyecto. Hoy en esta conferencia, vamos a trabajar en la función de color, y vamos a aprender cómo podemos cambiar el color de nuestro lápiz. También, vamos a aprender cómo podemos cambiar el tamaño del latón. Vamos a trabajar en dos funciones totales, función color de manguera y función de cambio de tamaño de latón. Entonces agreguemos un comando a este botón. Entonces aquí, en nuestro botón de color, voy a agregar un comando, y nuestro nombre de comando es elegir color. Y como saben, no definimos esta función en nuestra sección de funciones. Entonces voy a copiar el nombre de la función elegir color, y voy a crear esa función. Entonces después de configurar la herramienta, voy a crear esa función en esa sección. Entonces escribe Dave y nuestro nombre de función es elegir color. Voy a poner los rogresses. Entonces dentro de la función, por ahora, voy a escribir pass. Además, voy a definir otra función para cambiar el tamaño del sujetador de dip Dave nuestro nombre de función es cambiar el tamaño de latón, y dentro de los bruss redondos voy a pasar una variable para esa válvula Dentro de la función por ahora, voy a escribir pass. Ahora, necesitamos mandar esa función en nuestra habilidad. Copia el nombre de la función y aquí, aquí, comando, igual a tipo, comando igual a cambiar tamaño latón. Yo llamo a esa función. Voy a establecer este archivo. Ahora primero, voy a trabajar en función de color elegí la función de color. Volvamos a la función de color elegido. En esa función, vamos a abrir un diálogo de selección de color, y va a permitir al usuario elegir un color de dibujo. Básicamente, vamos a cambiar el color de la pintura con la ayuda del cuadro de diálogo selector de color Entonces primero, voy a primero, voy a la variable global, global y voy a variable de color del dolor global porque vamos a usar eso. Por defecto, como sabes, nuestro color pin es negro. Entonces voy a establecer el color. Color, color equival a aquí voy a abrir un cuadro de diálogo de color elegido, subtipo color elegido, punto, preguntar Pregunta color. Entonces dentro de la ronda dice, voy a poner el título de este cuadro de diálogo. Título, y voy a usar exactamente el mismo título que nuestros programas sussist Título igual a elegir dolor coloreado. Entonces voy a decir una condición de IP. Si coloreo si color dentro del cuadrado base uno, entonces dentro de esta condición p, luego dentro de esta condición, voy a decir el color del dolor. Entonces voy a decir color pin, dolor, color, igual al color, igual al color dentro del cuadrado resis, uno. Ahora la pregunta es ¿qué básicamente hice aquí? Primero, globalizamos este color de pin variable, luego abrimos un cuadro de diálogo selector de color Entonces veo condición. Si el color dentro de la base cuadrada, utilizo uno. Yo uso el índice número uno. Si usas índice número cero, entonces va a representar color RGB si usas índice número uno, entonces va a representar color hexa V. Como puedes ver, aquí abro un selector de color inbuild de Kiner y está escrito un tupel en ese tupel tenemos ese tupel Un color RGB y color hexa Vallow y aquí yo es el valor de color hexa Si elijo valor de color hexa, entonces quiero guardar el mismo valor de color hexa que nuestro color rosa. Esto es lo que hago aquí. Ahora vamos a configurar el archivo y ejecutar este código en mi terminal. Pero antes de establecer este código, creo que cometí un error aquí porque es mostrarme alguna advertencia. Sí, creo, olvidé proporcionar un CBA entre estos dos parámetros. Este es nuestro problema. Después de configurar este archivo, si vuelvo a mi sección de funciones elegí color y configuré este archivo nuevamente y ejecuto este código en mi terminal, este archivo nuevamente y ejecuto este código en mi terminal, ahora si dibujo una línea, como pueden ver, por defecto, nuestro color pin es negro. Ahora bien, si hago clic en este botón de color, abre un cuadro de diálogo selector de color, y a partir de ahí, quiero seleccionar color verde, y presiono Bien. Ahora si dibujo una línea, como pueden notar, ahora es dibujar la línea con color verde. Si cambio el color, si me vuelvo en rojo y el en este archivo y trato de dibujar esta línea, se puede ver el resultado. Ahora somos capaces de trazar líneas en diferentes colores. A continuación, vamos a trabajar en esta función. Vamos a definir el tamaño del latón. Por defecto, dijimos latón talla tres, pero quiero aumentar el tamaño del pincel, lo contrario disminuir el tamaño de los sujetadores. Volvamos al código. Voy a matar esa terminal y volver al código y voy a empezar a trabajar en esta función, cambiar el tamaño de latón. Como se puede ver cómo definimos una función que toma un único argumento válvula. Y en esa función, necesitamos actualizar el tamaño del pincel cada vez que se mueve el deslizador. Y como saben, a nuestro mando, llamamos a esa función. Cada vez que nuestro deslizador se mueve, interatomic envía automáticamente el valor del deslizador a la variable val No necesitamos hacer nada por eso. Entonces tenemos este deslizador. Ahora, según el valor del slider, vamos a construir la función. Entonces, al principio, necesitamos mover el PASQR y necesitamos hacer que nuestro tamaño de pincel sea global Algún tipo global y tamaño de latón. A continuación, voy a establecer el tamaño del pincel, tamaño de latón igual a, voy a ejecutar int function, int, int, y dentro de los bruss run voy a pasar la variable val, el argumento Val Val, eso es todo. Y voy a poner este archivo. Después de establecer este archivo, si ejecuto este código en mi terminal y y vuelvo al lienzo y dibuje una línea con color negro. Ahora quiero aumentar el tamaño del trazo de latón. Voy a aumentar el slider, voy a hacer seis. Ahora, si dibujo una línea, ahora puedes notar el trazo de línea. Yo mucho más grueso que el anterior. Ahora, si lo hago diez, ahora es más grueso que eso. la misma manera, si reduzco el valor, si lo hago uno, sólo uno y luego trazo una línea, se puede notar el resultado. Ahora es mucho más grueso que el tamaño di cuatro porque ahora nuestro trazo de pincel es uno. la misma manera, si lo aumento a los niveles altos 20 y luego trazo una línea, se puede ver el resultado. Entonces así es como podemos cambiar el tamaño del trazo del pincel y el color del pincel. Entonces esto es para este tutorial. En la siguiente parte de este tutorial, vamos a aprender cómo podemos dibujar un rectángulo de línea recta y un círculo. Y en la última parte de este tutorial, vamos a aprender cómo podemos despejar el área del lienzo. También, vamos a aprender cómo podemos guardar nuestro dibujo con la ayuda de decir botón. Entonces gracias estamos viendo este video estado para el próximo capítulo. 6. Trabajar sobre la función para dibujar diferentes formas geométricas: Hola, chicos. Es bueno verte de vuelta. Esta es la otra parte de este tutorial, y en este tutorial, vamos a trabajar en formas como círculo, rectángulo, línea, etcétera Como puedes ver en nuestros botones, aquí utilizo la función Lambda, una función lineal y establecemos la variable line, rectángulo y circle. Siempre que presionamos ese botón, el botón particular, como la línea, luego va a resbalar la línea, y va a pasar en la variable de línea de función sectorial Ahora bien, de acuerdo a las variables como rectángulo de línea, lo contrario círculo, necesitamos dibujar las formas. Para eso, tenemos que ir y saltar a la función draw. Y aquí tenemos que decir la condición LC. Déjame mostrarte cómo la herramienta de cuidado de IA en línea, rectángulo, de lo contrario círculo, luego dentro la condición de elipse aquí, voy a establecer otra condición Tipo I shape preview, shape, preview, luego dentro de la condición IP, voy a establecer, Canvas dot delete Canvas dot, dtm, delete, y quiero borrar la vista previa de la forma Vista previa de forma. Al principio, se va a verificar, si el usuario selecciona una herramienta de forma entre rectángulo de línea y círculo, entonces en ese caso, va a eliminar la forma de vista previa anterior. En nuestra condición IP, aquí dije me forma revisión luego dentro de esta condición P, eliminamos la forma de vista previa anterior. Entonces voy a establecer otra condición IP si la herramienta actual es igual a igual a línea, luego dentro de esta condición IP, aquí, voy a escribir shape review ahora shape review convertido Canvas dot create line function, así que vamos a crear una línea. Aquí, primero definimos el punto de partida, inicio X e inicio Y, luego definimos la posición actual del mouse. Eventos y evento Y. Después de eso, usamos el color del dolor, el color del pin actual que pizarra aquí definimos la línea con tamaño exacto de latón. Entonces L actual dos igual a igual a rectángulo, luego dentro del bloque LC, aquí, necesitamos atar revisión de forma. Ahora la revisión de forma se convierte en punto de lienzo , crea rectángulo, crea la función de rectángulo, y necesitamos definir la posición inicial del rectángulo, también en para definir la posición final del rectángulo. Luego para el contorno, usamos el color del dolor y para el ancho del rectángulo y para el ancho del trazo del rectángulo, usamos el tamaño de latón. Y tenemos que hacer lo mismo por el círculo. C, herramienta actual igual a igual a círculo, luego dentro de la condición EIP Vista previa de forma igual a Canvas dot create Oval. Usando Canvas create Oval, podemos crear circuitos. Aquí definimos la posición inicial y la posición final de nuestro contorno ovalado es de color pin para el trazo, usamos la talla exacta del sujetador. Aquí creamos este perro para la forma. Se va a mostrar la vista previa mientras arrastramos. Ahora, vamos a configurar el archivo y ejecutar este código en mi terminal y ver si funciona correctamente o no. Entonces para ejecutar este código en mi terminal, voy a seleccionar la línea la línea dos. Después de seleccionar la línea, si trato de dibujar una línea desde este punto hasta este punto, sí, dibuja la línea, pero no hay problema. Cuando suelte el ratón y trato de dibujar otra línea, se quita la primera línea. También es cielo para rectángulo también. Déjame mostrarte. Si trato de dibujar un rectángulo y éste dibuja el rectángulo con éxito, pero cuando suelto el ratón y trato de dibujar otro rectángulo, se quita el anterior. Como hace lo mismo por este circulo. Si dibujo otra forma, elimina la anterior. Básicamente, da la revisión de forma en tiempo real, pero no establece la forma de forma permanente. Ese es el problema. Para resolver ese problema, necesitamos trabajar, tenemos que trabajar en esta función. Déjeme mostrar. Detente, dibuja. Ya creamos la función. Es una función eved t. Entonces, cuando liberemos nuestros autos cuando soltemos nuestro derecho, va a dejar de dibujar y y finalizar la forma del dibujo Aquí en esta función, voy a quitar el Puskword y voy a global forma vista previa de forma tipo variable vista previa de forma global Ahí voy a decir en condición p. Si la herramienta actual EP herramienta actual dentro de la línea de redondeos, rectángulo y círculo, luego dentro de esta condición IP , luego dentro de esta condición IP, quiero escribir, voy a llamar a un método, dibujar , dibujar dentro de las rondas paso el evento Evento voy a finalizar la forma. Entonces dar forma, revisar, dar forma, revisar, convertirse en ninguno. Eso es. Voy a poner estos cinco. La función de dibujo strop se llama cuando el usuario suelta el botón del mouse y sus joves finalizan la forma, la línea rectangular y la forma línea rectangular y Como sabrás cuando arrastramos el ratón, mostramos una forma de vista previa Pero la forma de vista previa no es la forma final y la forma de vista previa se elimina en cada momento. Esta función finalmente va a dar forma. Al principio, en esta función, accedemos a la revisión de forma usando variable global. Por lo que almacena el ID en la forma de vista previa visual actual. Tenemos que reafirmar, de lo contrario quitarlo después del dibujo la forma final Entonces usamos condición IP si toolin actual mentira rectan y círculo Solo finalizamos formas cuando el usuario está usando shape Recuerda, mano libre y borrador no necesitan ninguna Sus vidas ya están dibujadas permanentemente durante el arrastre. Entonces dentro de él, llamamos a la función draw. Como saben, en esa función, fijamos permanentemente la sombra. Entonces otra vez, restablecemos la variable de vista previa. Forma PV igual a ninguno. Ahora, después de establecer este archivo, si ejecuto este código en mi terminal y trato de dibujar un rectángulo, déjame mostrarte dónde dibujo un rectángulo y voy a dibujar otro rectángulo. Ahora puedes notar que no cavas nuestro previo previo. Ahora guarda permanentemente la sombra. Aquí aquí dibujo algunos círculos y ahora voy a trazar una línea. Ahora bien, si cambio el tamaño del pincel y según el tamaño del pincel, va a dibujar el trazo de línea. Similar para este circui. Ahora puedes notar ahora nuestro trazo circular es más grueso que el anterior y lo mismo para el rectángulo. En la siguiente parte de este tutorial, vamos a trabajar en Pier y guardar. Cómo podemos cuidar esta ventana después de presionar este botón. Además, vamos a aprender cómo podemos configurar la imagen de forma permanente usando el botón Guardar. Gracias por ver este video estén atentos para nuestro próximo tutorio 7. Trabajar en el botón guardar y borrar: Hola, chicos. Me alegro de verte de vuelta. Una vez más, estoy de vuelta con otro capítulo , proyecto Relateo, y en esa sección, vamos a aprender cómo podemos despejar nuestra ventana después de dibujar algo en nuestra ventana, y vamos a aprender cómo podemos guardar nuestro dibujo con la ayuda del botón de guardar Después de dibujar algo en nuestro lienzo, si presionamos el botón de borrar, quiero despejar esa ventana. Empecemos y veamos cómo podemos hacerlo. Así que estoy de vuelta a mi código aquí, voy a definir otra función, y nuestro nombre de función es ear Canvas, algún tipo D ear Canvas dentro de la función. Aquí, voy a escribir Canvas dot, delete all method. Método de eliminación de puntos de lienzo, eliminar. Dentro de la redondez y dentro los códigos dobles, voy a pasar todos Esta función borra completamente todo lo dibujado en el lienzo Kinker Básicamente todo es una etiqueta especial en Canvas, y cuando usamos fecha, quitó todos los elementos del lienzo, como línea, forma, imágenes, texto, cualquier cosa dibujada o agregar a nuestro lienzo. Entonces voy a conducir un comentario de una sola línea. Esta función, esta función se usa para dibujos de engranajes, y voy a configurar este archivo y ejecutar este código en mi terminal. Después de ejecutar este código en mi terminal, si dibujo algo en mi lienzo y presiono el botón de lágrima, no está funcionando. Ahora después de definir esa función, necesitamos llamar a esa función. Tenemos que llamar a esa función a este botón de oído en particular. Este es nuestro botón de oreja y después del texto aquí, voy a definir para definir el parámetro command, command igual a peer función Canvas. Y voy a volver a poner este archivo. Después de establecer este archivo, si ejecuto este código en mi terminal y dibujo algo en nuestro lienzo, como línea, rectángulo, círculo, mano libre, lo que sea. Entonces si presiono el botón Borrar, como pueden ver, se despejó el área del lienzo. En una patada se aclara todo. Entonces nuestro botón funciona bien. Abrupto que necesitamos trabajar en el botón de set. Sea lo que sea que dibujemos en esa zona, tenemos que ponerla como pino. Volvamos al código y comencemos a codificar. Entonces aquí voy a definir una nueva función. Aquí voy a escribir Dave y nuestro nombre de función es sap Canvas. Entonces dentro de esta función, quiero usar try and accept block. Prueba Prueba dentro del triblog. Dentro del triblog necesitamos conseguir la posición en la lona Primero, necesitamos obtener la posición de Canvas en la pantalla. Quiero decir la posición exacta del lienzo. Al principio, necesitamos extraer los iniciales y los YxS iniciales Entonces necesitamos extraer las Xs finales y las YxS finales. Nuestro punto X inicial es X igual a ventana de punto raíz info subrayado raíz X, concatenar con Canvas dot win info x Luego dentro de este bloque seco, primero, necesitamos extraer la posición de nuestro lienzo y la posición Y de nuestro lienzo. Luego dentro de este bloque seco, primero, necesitamos extraer la posición de nuestro lienzo y la posición Y de nuestro lienzo Después de eso, necesitamos extraer el ancho de este lienzo y la altura de este lienzo. Para extraer la posición de este lienzo, voy a definir una variable llamada X. X equival a M type, root, dot Win info root x. redondo, ahora que hace Win info root x? Devuelve la posición X de la ventana Kinted en la pantalla. Entonces quiero concatenar con, después voy a concatenar con Canvas, Canvas dot, Ventana en cuatro, ganar info X. Ahora ¿qué devuelve? Es la posición del lienzo dentro la ventana y agregar el valor le da la posición real del lienzo en la pantalla. De la misma manera, necesitamos extraer la posición Y. La siguiente línea tipo Y igual a root, root dot window info, root Y, y agrego con Canvas window info Y. ¿ Va a proporcionar la posición real de nuestro lienzo en YxS Entonces después de eso, después de eso, necesitamos calcular la coordenada X lateral. Quiero decir maleza de lona. Entonces aquí X uno, voy a definir una variable llamada X igual a X hace canvas dot info Con función. Esta función devuelve el ancho de este lienzo. Y si concateno con la posición, nos va a dar el ancho real de esta área de lienzo Quiero decir agregándolo con X, p la coordenada X inferior derecha. Supongamos que este es nuestro lienzo, y aquí necesitamos tomar esta captura de pantalla de lienzo. Nuestro lienzo parte de este punto, este actual este punto y su final en ese punto. Entonces primero, necesitamos la posición de Xs y C de este punto y luego necesitamos posición de Xs y C de ese punto. X uno representa la posición de ese punto. la misma manera, necesitamos extraer la posición Y de ese punto. Para eso, teclearía Y uno igual a Y más Canvas dot info, ganaría info underscore height Esta función proporcionará la altura del lienzo. Si agregamos con YxS entonces va a devolver la posición del lienzo abajo a la derecha coordenada Y Ahora teníamos las coordenadas y necesitamos establecer esa imagen. Para eso, ruta de archivo, ruta de archivo, archivo, underscoePAT, ruta de archivo igual a, y aquí voy a abrir un cuadro de diálogo de archivo Algún tipo de diálogo de archivo, cuadro de diálogo de archivo punto. Pedir guardar nombre de archivo. Pedir guardar nombre de archivo. Y voy a proporcionar la extensión por defecto. Algún tipo extensión predeterminada, y quiero guardar el archivo en archivo PNG. Formato PNG, punto PNG. Después de eso, coma, después de coma, necesitamos proporcionar los tipos de archivo, tipos de archivo iguales a dentro del cuadrado ss y para definir los tipos de archivo Dentro de las rotondas, básicamente, quiero mostrar solo los archivos PNG, typ archivos PNG Entonces una coma, luego una coma, necesitamos definir de nuevo la extensión Podría ser cualquier nombre antes de que comience algún tipo estrella que PNG. Es decir, si hay otro archivo PNG en esa carpeta, va a mostrar todos los archivos PNG de esta carpeta. Básicamente, esta variable va a preguntar al usuario dónde guardar la imagen. En primer lugar, pide al usuario la presentación. Luego asegúrese de que la extensión predeterminada sea PNG. Después de eso, después de eso, va a filtrar los archivos y mostrar solo las imágenes PNG en esa ventana. A continuación, dentro de este tri bloque, voy a poner condición. Aquí voy a dar propina ruta de archivo yo ruta de archivo, luego dentro de esta condición IP, grab image, image grab, image grab dot, grab method. Agarra. Si hay un nombre de archivo entonces dentro de esta condición IP, voy a tomar una imagen del Canvas. Yo uso el método de captura de imágenes, luego dentro de las rondas luego las llaves redondas, luego ater ese punto, método de recorte, grab dot crop aquí necesitamos pasar la X y inicio y el punto final de nuestra pantalla De donde queremos tomar captura de pantalla. Dentro del bajo dice X, Y, X uno, X uno coma Y uno, Y uno Quiero guardar ese tipo de archivo dot save y es la ruta del archivo de rondas, ruta de archivo. Voy a establecer este archivo. Si no hay ruta de archivo, va a tomar esta captura de pantalla. Entonces va a tomar esta captura de pantalla y establecerla en esa ruta de archivo en particular. Después de eso, quiero mostrar mensaje de éxito. Entonces escribe este mensaje de éxito. Las bolas de mensaje muestran información, se configuran con éxito, y dentro de la cadena F, voy a pasar Canvas Seb como esta ruta de archivo en particular Entonces excepción excepción de salida como E, y quiero mostrar un mensaje de error. Cuadro de mensaje punto mostrar error cuadro de mensaje punto mostrar error Seb error Cadena qual a los líos de error exactos. Entonces si hay un error para configurar este archivo, va a mostrar un mensaje de error en ese cuadro de mensaje, este error pies. Y voy a poner este archivo. Ahora después de establecer este archivo, dejó ejecutar el código en nuestra terminal. Voy a establecer este archivo. Después de establecer este archivo, voy a llamar a esa función lona de función segura en ese botón en particular. Entonces escribe comando. Entonces este es nuestro botón set, Heyman, comando igual a nuestro nombre de función, set Canvas Voy a poner en este archivo una coma. Después de establecer este archivo, si ejecuto este código en nuestro terminal y trato de dibujar cualquier cosa, si cambio el color, si lo hago un poco rojo, y luego dibujo otra línea si dibujo algún círculo, rectángulo, línea, otra vez, mano libre, luego presione el botón de guardar. Como pueden ver abre un cuadro de diálogo de archivo y quiero establecer ese archivo en la carpeta de documentos. Éste. Como puedes ver, por defecto, guarda como tipos archivo PNG y quiero nombrarlo Demo uno, Demo uno, Demo subrayado uno, demo uno punto png Si hago clic en el botón Sap y después de establecer ese archivo, aquí se puede ver un mensaje exitoso Sf conjunto Canvas acertado como en esa ubicación, Demo uno. Ahora bien, si abro la carpeta, déjame mostrarte así que si abro esa carpeta, aquí puedes notar la imagen. Ellos subrayan uno. Esta es la imagen PNG que creamos a partir de este lienzo. Espero que ahora el concepto sea claro para ti, cómo podemos dibujar a mano libre, cómo podemos dibujar líneas, cómo podemos dibujar rectángulos, círculos, cómo podemos eliminar usando goma de borrar, cómo podemos cambiar el color de nuestra pintura Podría ser de cualquier color, cómo podemos despejar esa ventana y cómo podemos configurar ese archivo, y también aprendemos cómo podemos cambiar el tamaño del latón. Este proyecto es un proyecto muy bueno para entender el concepto de aplicación de dibujo. Espero que ahora te quede claro, gracias por ver este video estad atentos para nuestro próximo proyecto.