miércoles, 1 de junio de 2016

Capítulo 33. Small Basic: Como manejar gráficos.


Diario de un programador día 77

Volviendo a small basic. Se pueden obtener colores aleatorios si se utiliza la instrucción GraphicWindow.GetRandomColor. Esta instrucción le asigna un color aleatorio al lápiz. Así que cada vez que se ejecute un programa, éste saldrá de un color distinto.

For i = 1 To 100 Step 5
  GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
  GraphicsWindow.DrawLine(50, 50 + i, 300, 50 + i)

EndFor


Otro ejemplo:

GraphicsWindow.BackgroundColor = "Black"
GraphicsWindow.Width = 200
GraphicsWindow.Height = 200

For i = 1 To 100 Step 5
  GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
  GraphicsWindow.DrawEllipse(100 - i, 100 - i, i * 2, i * 2)
EndFor


También se puede mezclar con la instrucción Math.GetRandomNumber que sirve para obtener números aleatorios, los cuales se pueden utilizar para obtener coordenadas al azar. Como siempre, un ejemplo:
GraphicsWindow.BackgroundColor = "Black"
For i = 1 To 1000
  GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
  x = Math.GetRandomNumber(640)
  y = Math.GetRandomNumber(480)
  GraphicsWindow.FillEllipse(x, y, 10, 10)
EndFor


Existe otro modo de dibujar gráficos y es utilizando lo que se conoce como "tortuga", el cual muestra una pequeña tortuga a la cual es posible desplazar por la ventana gráfica y en su desplazamiento va dibujando líneas.

A mí en lo personal no me llama mucho la atención esta tortuga, así que no le daré mayor atención que la mencionada hasta ahora, pero si a alguien le interesa, puede encontrar información en el capítulo 8 del manual de small basic.


OPCIONES NO MUY DOCUMENTADAS EN SMALL BASIC

Es muy bueno que este lenguaje tenga un menú de ayuda, el cual no solamente indica la sintaxis sino que también muestra claros ejemplo de cómo utilizar una instrucción u otra, pero de seguro más de alguien pudo notar que no todas vienen con claras instrucciones de cómo utilizarse. Así que dedicaré este espacio a mencionar aquellas instrucciones que no están muy bien documentadas. Ya que estoy en el apartado del GraphicWindow, empezaré por aquí.

GraphicsWindow.BackgroundColor

Según la descripción, esta propiedad permite cambiar el fondo de la venta gráfica. Para utilizarla, se debe colocar un signo = seguido de un color "en inglés" el cual va encerrado entre comillas. De esta forma

GraphicsWindow.BackgroundColor = "green"


GraphicsWindow.BrushColor

Según la descripción, esta propiedad permite cambiar el color del pincel (para rellenar figuras de color, parecido al bote de pintura en paint). Para utilizarla, se debe colocar un signo = seguido de un color "en inglés" el cual va encerrado entre comillas. De esta forma

GraphicsWindow.BrushColor = "blue"
GraphicsWindow.FillRectangle(50,50, 100,100)


GraphicsWindow.CanResize

Según la descripción, indica si la ventana de gráficos puede ser modificado o no. En otras palabras, sirve para activar o desactivar el botón de "maximizar y minimizar" de la ventana gráfica. Para utilizarla, se debe colocar un signo = seguido de una palabra encerrada entre comillas. Yo prefiero colocar "no" para así saber que la ventana no puede ser modificada, pero en realidad se puede poner casi cualquier cosa y digo casi cualquier cosa, porque al poner "true" los botones vuelven a estar activos.

GraphicsWindow.CanResize = "no"


GraphicsWindow.Clear()

Según la descripción, vacía la ventana, o sea que borra todo lo que hay en pantalla. No necesita parámetros, se utiliza así sin más.

GraphicsWindow.DrawBoundText(x,y,width,text)

Según la descripción, dibuja una línea de texto ubicada según las coordenadas (x,y), width se refiere al ancho del texto. Esto es similar al ancho de un cuadro de texto en Word, donde si el ancho es menor al tamaño del texto, el texto puede salir en dos líneas y si es muy pequeño este valor, entonces el texto no se visualizará. Text, es el texto que saldrá escrito en pantalla y va entre comillas.

GraphicsWindow.DrawBoundText(10,10, 100, "Saludos")


GraphicsWindow.DrawBoundText(10,10, 50, "Este es un texto algo largo")


El color del texto puede ser modificado con brushcolor

GraphicsWindow.BrushColor = "green"
GraphicsWindow.DrawBoundText(10,10, 100, "Saludos")


GraphicsWindow.DrawImage(imageName,x,y)

Sirve para cargar una imagen desde nuestro equipo o desde una web. Si se hace desde nuestro equipo, se debe especificar la ruta donde se encuentra la imagen. “imageName” se refiere al nombre de la imagen, el cual debe especificar su ubicación. (x,y) son las coordenadas donde se mostrará la imagen en la ventana gráfica. Ejemplo

imagen = "d:\documento\nieve.jpg"
GraphicsWindow.DrawImage(imagen, 0,0)


GraphicsWindow.DrawResizedImage(imageName,x,y,width,height)

Igual que el anterior, pero en este caso se puede redimensionar el tamaño de la imagen. Ejemplo

imagen = "d:\documento\nieve.jpg"
GraphicsWindow.DrawResizedImage(imagen,0,0, 75,50)


GraphicsWindow.DrawText(x,y,text)

Al igual que el anterior, dibuja un texto según las coordenadas (x,y) pero no tiene el factor del ancho del texto, por lo que no se podrá modificar en dos o más líneas. El color del texto también puede ser modificado por brushcolor.

GraphicsWindow.BrushColor = "purple"
GraphicsWindow.DrawText(10,10, "Esto es otro texto")


GraphicsWindow.FontBold

Sirve para activar o desactivar el efecto "negritas" que viene por defecto. Para utilizarlo, se debe colocar un signo = seguido de una palabra entre comillas, yo prefiero colocar "no" para saber que las estoy desactivando. Si se coloca "true" se vuele a activar.

GraphicsWindow.DrawText(10,10, "Negritas") 'Por defecto

GraphicsWindow.FontBold = "no" ' se desactiva
GraphicsWindow.DrawText(10,25, "Normal")

GraphicsWindow.FontBold = "true"' se activa
GraphicsWindow.DrawText(10,40, "Negritas")


GraphicsWindow.FontItalic

Sirve para activar o desactivar el efecto "cursiva". Por defecto viene desactivado. Para utilizarlo o activarlo, se debe colocar un signo = seguido de la palabra true entre comillas. Para desactivarla, vale colocar cualquier palabra. Yo prefiero colocar "no" para saber que la estoy desactivando.

GraphicsWindow.DrawText(10,10, "Saludos")' por defecto

GraphicsWindow.FontItalic = "true" ' se activa
GraphicsWindow.DrawText(10,25, "Saludos")

GraphicsWindow.FontItalic = "no" ' se desactiva
GraphicsWindow.DrawText(10,40, "Saludos")


GraphicsWindow.FontName

Permite cambiar el tipo de fuente (letra) a utilizar.  Para utilizarlo, se debe colocar un signo = seguido del nombre del tipo de fuente, encerrado entre comillas

GraphicsWindow.FontName = "arial"
GraphicsWindow.DrawText(10,25,"hola")

GraphicsWindow.FontName = "calibri"
GraphicsWindow.DrawText(10,40,"hola")

GraphicsWindow.FontName = "courier new"
GraphicsWindow.DrawText(10,55,"hola")


GraphicsWindow.FontSize
Permite cambiar el tamaño de la fuente.

GraphicsWindow.FontSize = "10"
GraphicsWindow.DrawText(10,10, "Hola")

GraphicsWindow.FontSize = "14"
GraphicsWindow.DrawText(10,25, "Hola")

GraphicsWindow.FontSize = "18"
GraphicsWindow.DrawText(10,40, "Hola")


GraphicsWindow.LastKey

Según la descripción, “obtiene la última tecla que se presionó o liberó.” Esta propiedad, se utiliza principalmente en conjunto con los eventos, lo cual se explicará con mayores detalles en su oportunidad. Pero principalmente sirve para saber qué tecla se ha presionado.
De todas formas daré un ejemplo de esto, auque aparezcan cosas que quizas a estas alturas no se entiendan, pero no hay que preocuparse que todo esto lo explicaré llegado a su momento.  Este programa dice que tecla se ha presionado y va cambiando a medida que se presione una tecla distinta.

Sub inicio
  GraphicsWindow.DrawText(10,10, "Presiona una tecla")
EndSub

GraphicsWindow.KeyDown = presionar

Sub presionar
  GraphicsWindow.Clear()
  tecla = GraphicsWindow.LastKey
  GraphicsWindow.DrawText(10,25, "Has presionado " + tecla)
  inicio()
EndSub

inicio()


GraphicsWindow.LastText

Muy parecida a la anterior, solo que sirve para obtener el texto ingresado. Al igual que el anterior, se verá con más detalle cuando se estudien los eventos.

Aún hay más instrucciones que mencionar, pero eso será en otro capítulo.

Gustavo J. Cerda Nilo
Enero 2016, última actualización Junio 2016



1 comentario:

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...