Creo que seria interesante tener un lugar, ya sea un post o si llega un día..un foro..jeje , dedicado al dibujo.
Con sus subforos. Podríamos tener, Cairo o Paint, OpenGL, SDL ( cosa que no vemos mucho).
Actualmente estoy viendo esta página donde aprendo un poco de PyGame. Aunque tengo manuales.
Programar juegos arcades con Pygame
Como es logico es para Python. Aunque acabo de comenzar y aun no me entero bien del tema.
Al realizar un ejemplo de dibujar rectángulos, no daba con el problema.
Imaginar que queréis dibujar algo como esto: ( Está hecho con gambas )
Me encontré el mismo problema tanto en PyGame como con gambas, no entendía por que me salía esto.
No es cuestión de saber el lenguaje, es cuestión de entender el problema.
Cuando hacemos las cosas a veces no nos damos cuenta.
En este caso es un área de dibujo de 500 x 500, Cuando dibujamos un rectángulo tenemos el vértice superior izquierda
y el vértice inferior derecha.
Así que en este dibujo, los lados de nuestro rectángulo van disminuyendo a medida que nuestro vértice superior izquierdo se va desplazando hacía la derecha.
Nuestro vértice inferior izquierda se desplaza a la izquierda.
Pero, ah, ese era el problema. Donde comienza a dibujar tienes una parte por la izquierda y otro por la derecha, ( del mismo tamaño que debes restar
al segmento o lado que dibujas). Con lo que debes restar esos dos pequeños segmentos al segmento que forma nuestro lado.
Ejercicio:
A los "osados", ¿ y si quiero tener rectángulos rellenos de colores ?. Pudiendo ver cada relleno de los colores.
¿ Necesitaremos un Paint.FIll para rellenar nuestros rectángulos ?.
¿ Cómo evitareis esto ?. Es que quiero ver lo mismo, pero con colores rellenos.
Pd, ¿ Sabíais que el ejemplo anterior es más fácil en gambas ?.
Esto es en PyGame. No es que sea muy grande pero si hay que usar otras cosas más.
Código:
# Importamos la librería de funciones llamada 'pygame'
# Tenemos que tener instalada la librería
import pygame
# inicializamos el motor de juegos
pygame.init()
# Definimos algunos colores
NEGRO = ( 0, 0, 0)
BLANCO = ( 255, 255, 255)
# Podemos usar la web www.colorpicker.com para ver la gama de colores
# El formato es ( R, G, B )
# Ponemos el ancho y alto del area de dibujo
# tama = [ ancho, alto ]
tama = [500, 500]
pantalla = pygame.display.set_mode(tama)
# Titulo de la ventana
pygame.display.set_caption('Rectángulos concéntricos espaciados')
# Se repetira hasta que el usuario haga clic en el botón de cerrar
done = False
# Lo usamos para que administre con cuanta rapidez actualizamos la pantalla
reloj = pygame.time.Clock()
# ---------- Programa Principal ----------------
while not done:
# Todos los eventos que queremos procesar deben ir debajo de este comentario
for evento in pygame.event.get(): # El usuario hace alguna cosa
if evento.type == pygame.QUIT:
done = True
# Todos los eventos que queremos procesar deben ir encima de este comentario
# Todo el codigo para dibujar debería ir debajo de este comentario
# Limpia la ventana y establece el color de fondo
pantalla.fill(BLANCO)
# Actualiza por completo nuestra pantalla Pygame
pygame.display.flip()
for i in range(0, 500, 10):
pygame.draw.rect(pantalla, NEGRO, [i, i, 500-i*2, 500-i*2], 2)
# Todo el codigo para dibujar debería ir encima de este comentario
# Limite de 20 imagenes por segundos
reloj.tick(20)
# Para salir
pygame.quit()
# Tenemos que tener instalada la librería
import pygame
# inicializamos el motor de juegos
pygame.init()
# Definimos algunos colores
NEGRO = ( 0, 0, 0)
BLANCO = ( 255, 255, 255)
# Podemos usar la web www.colorpicker.com para ver la gama de colores
# El formato es ( R, G, B )
# Ponemos el ancho y alto del area de dibujo
# tama = [ ancho, alto ]
tama = [500, 500]
pantalla = pygame.display.set_mode(tama)
# Titulo de la ventana
pygame.display.set_caption('Rectángulos concéntricos espaciados')
# Se repetira hasta que el usuario haga clic en el botón de cerrar
done = False
# Lo usamos para que administre con cuanta rapidez actualizamos la pantalla
reloj = pygame.time.Clock()
# ---------- Programa Principal ----------------
while not done:
# Todos los eventos que queremos procesar deben ir debajo de este comentario
for evento in pygame.event.get(): # El usuario hace alguna cosa
if evento.type == pygame.QUIT:
done = True
# Todos los eventos que queremos procesar deben ir encima de este comentario
# Todo el codigo para dibujar debería ir debajo de este comentario
# Limpia la ventana y establece el color de fondo
pantalla.fill(BLANCO)
# Actualiza por completo nuestra pantalla Pygame
pygame.display.flip()
for i in range(0, 500, 10):
pygame.draw.rect(pantalla, NEGRO, [i, i, 500-i*2, 500-i*2], 2)
# Todo el codigo para dibujar debería ir encima de este comentario
# Limite de 20 imagenes por segundos
reloj.tick(20)
# Para salir
pygame.quit()
Saludos
Rectangulos.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Rectangulos.tar.gz | |
Tamaño: | 11.98 KB | |
Descargado: | 40 veces |
Rectangulos.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Rectangulos.tar.gz | |
Tamaño: | 11.98 KB | |
Descargado: | 40 veces |
Rectangulos.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Rectangulos.tar.gz | |
Tamaño: | 11.98 KB | |
Descargado: | 40 veces |