Entradas para la categoría 'Otros Proyectos'

Herramienta para crear fuentes

Jueves 27 de Septiembre de 2007 a las 0:23

Esta aplicación permite exportar las fuentes instaladas en el sistema como una imagen a un fichero del tipo bmp, gif, png o jpg y un fichero que describe la ubicación y dimensiones de cada carácter dentro de la imagen.

Se permite indicar los caracteres a exportar no teniendo porque exportar todos. Dispone de un menú para seleccionar los caracteres más comunes como las minúsculas, las mayúsculas, los dígitos del 0 al 9, etc. lo que evita al usuario tener que teclear dichos caracteres.

También se permite configurar el tipo de fuente, su tamaño, color, si esta en negrita, cursiva, el formato de la imagen (png, bmp, gif, jpg), las dimensiones de la imagen, el color que será considerado como transparente y el espacio que se dejará entre caracteres. La imagen puede crearse haciendo uso del anti-aliasing, lo cual tiene la ventaja de que los bordes de las caracteres quedan más suavizados.

Todos los datos establecidos en la la herramienta se conservan para la siguiente ejecución, con lo que no es necesario volver a introducir dichos datos.

Se ofrece la posibilidad de previsualizar la imagen antes de proceder a su exportación.

(Pulsad la imagen para verla a tamaño real)
Creador de fuentes.
Creador de fuentes.

Una de las características más interesantes de la herramienta es la enorme flexibilidad para exportar los datos a diferentes formatos y la facilidad para incorporar nuevos formatos personalizados mediante un sistema de plugins.

Independientemente del formato de exportación, los valores que se guardarán en el fichero serán el ancho y el alto de la imagen en pixeles, el espacio entre caracteres y por cada carácter la posición expresada en pixels tanto en X como en Y y el ancho y alto del carácter.

Inicialmente la herramienta cuenta con cinco formatos para exportar las fuentes:
- Fichero CSV: Valores separados por comas (en este paso por ;)
- Fichero XML: XML donde cada carácter es un nodo, que contiene cuatro nodos hijos con los diferentes valores
- Fichero XML Atributos: XML donde cada carácter es un nodo que tiene cuatro atributos con los diferentes valores
- Fichero Binario: Los datos se guardan en un fichero binario
- Fichero Texto: Los datos se guardan como texto plano

La forma de crear plugins para extender la funcionalidad de la herramienta incorporándola nuevos formatos de exportación consiste en crear una dll que contenga la clase o clases con los nuevos formatos. Cada clase que proporcione un nuevo formato debe implementar la interfaz IPersistir que tiene la siguiente definición:

 

VB.NET:
  1. Public Interface IPersistir
  2.  
  3.     ''' <summary>
  4.     ''' Nombre del plugin
  5.     ''' </summary>
  6.     ''' <value></value>
  7.     ''' <returns></returns>
  8.     ''' <remarks></remarks>
  9.     ReadOnly Property Nombre() As String
  10.  
  11.     ''' <summary>
  12.     ''' Escribe en un fichero la información de la fuente
  13.     ''' </summary>
  14.     ''' <param name="ficheroSalidaSinExtension">Ruta del fichero (sin incluir la extension) en el que
  15.     ''' se escribirá la información de los caracteres</param>
  16.     ''' <param name="anchoImagen">Ancho en pixeles de la imagen</param>
  17.     ''' <param name="altoImagen">Alto en pixeles de la imagen</param>
  18.     ''' <param name="separacionEntreCaracteres">Número de pixels de separación entre carácter y carácter</param>
  19.     ''' <param name="caracteres">Carácteres a escribir junto con su información</param>
  20.     ''' <remarks></remarks>   
  21.     Sub Escribir(ByVal ficheroSalidaSinExtension As String, ByVal anchoImagen As Integer, ByVal altoImagen As Integer, ByVal separacionEntreCaracteres As Integer, ByVal caracteres As Dictionary(Of Char, Rectangle))
  22.  
  23. End Interface

 

El nombre del plugin será el que posteriormente se mostrará dentro del menú "Guardar Como" de la herramienta

Como ejemplo se muestra a continuación la implementación del plugin que permite guardar los datos como XML con atributos:

 

VB.NET:
  1. Imports ExportadorFuentes
  2.  
  3. Public Class PersistirXMLAtributos
  4.     Implements IPersistir
  5.  
  6.     Public ReadOnly Property Nombre() As String Implements IPersistir.Nombre
  7.         Get
  8.             Return "XML Atributos"
  9.         End Get
  10.     End Property
  11.  
  12.     Public Sub Escribir(ByVal ficheroSalidaSinExtension As String, ByVal anchoImagen As Integer, ByVal altoImagen As Integer, ByVal separacionEntreCaracteres As Integer, ByVal caracteres As System.Collections.Generic.Dictionary(Of Char, System.Drawing.Rectangle)) Implements IPersistir.Escribir
  13.         Dim w As Xml.XmlTextWriter = Nothing
  14.         Dim c As Char
  15.  
  16.         Try
  17.             w = New Xml.XmlTextWriter(ficheroSalidaSinExtension & ".xml", System.Text.Encoding.UTF8)
  18.             w.Formatting = Xml.Formatting.Indented
  19.  
  20.             w.WriteStartElement("Fuente")
  21.             w.WriteAttributeString("AnchoImagen", anchoImagen.ToString)
  22.             w.WriteAttributeString("AltoImagen", altoImagen.ToString)
  23.             w.WriteAttributeString("SeparacionEntreCaracteres", separacionEntreCaracteres.ToString)
  24.             w.WriteEndElement()
  25.  
  26.             For Each c In caracteres.Keys
  27.                 w.WriteStartElement(c.ToString)
  28.                 w.WriteAttributeString("X", caracteres(c).Left.ToString)
  29.                 w.WriteAttributeString("Y", caracteres(c).Top.ToString)
  30.                 w.WriteAttributeString("Ancho", caracteres(c).Width.ToString)
  31.                 w.WriteAttributeString("Alto", caracteres(c).Height.ToString)
  32.                 w.WriteEndElement()
  33.             Next
  34.  
  35.         Catch ex As Exception
  36.             MsgBox(ex.Message)
  37.         Finally
  38.             If Not w Is Nothing Then
  39.                 w.Close()
  40.             End If
  41.         End Try
  42.     End Sub
  43.  
  44. End Class

 

La dll con el o los plugins debe copiarse en el mismo directorio en que se encuentre el ejecutable de la aplicación.

La herramienta ha sido desarrollada en Visual Basic.NET (VB.NET) y están disponibles para su descarga en la sección de descargas tanto el código fuente como los ejecutables.

La solución cuenta con dos proyectos: el creador o exportador de fuentes y uno para los plugins. El proyecto del exportador o creador de fuentes consta principalmente de dos elementos, el interfaz IPersistir y el formulario que es el que realiza la mayoría de las acciones. El proyecto de los plugins cuenta con cinco clases que implementan otros tantos tipos de formas de exportar los datos.

Simulador de vuelo

Domingo 16 de Septiembre de 2007 a las 23:55

Como comente en un post anterior últimamente he estado realizando unas pruebas con la programación gráfica en 3D.

El resultado es un sencillo simulador de vuelo en el que manejas un avión.

(Pulsad la imagen para verla a tamaño real)
Captura del simulador de vuelo.
Captura del simulador de vuelo.

La cámara puede moverse libremente por el mundo o fijarse a la parte delantera del avión o a su parte posterior.

En la parte inferior izquierda se visualiza el velocímetro analógico y la brújula que indica en que dirección te mueves. También se muestra un indicador de la altitud y de la inclinación con respecto al horizonte para saber si estamos ascendiendo o descendiendo y en que medida.
En la esquina inferior derechas se encuentra un pequeño mapa a escala y un punto rojo parpadeante que nos indica en todo momento en donde estamos y que es muy útil para dirigirnos a nuestro destino.

Esta desarrollado en Visual Basic .NET con el Framework 2.0 y haciendo uso de las DirectX 9.

Los gráficos como se puede observar son extremadamente malos.

(Pulsad la imagen para verla a tamaño real)
Captura del simulador de vuelo.
Captura del simulador de vuelo.

 

Herramienta para obtener el color de un pixel de la pantalla.

Domingo 9 de Septiembre de 2007 a las 23:56

Esta sencilla herramienta la desarrollé hace algo más de dos años y permite conocer el color de un determinado pixel de la pantalla. Dicho color es expresado por sus componentes ARGB tanto en hexadecimal como en decimal.
Esta herramienta puede ser útil si por ejemplo queremos poner un control de una pagina html o de una aplicación windows de un determinado color (que aparezca en otra pagina web o en una imagen) y no sabemos su representación para reproducirlo.

Su funcionamiento es muy sencillo. Tiene dos modos, capturar y no capturar. En el modo capturar se obtendrá el color del pixel sobre el cual posicionemos el ratón. Para cambiar de modo se debe pulsar la tecla "Espacio". También se puede pulsar con el ratón sobre el check de capturar, pero entonces se modificará el color obtenido ya que cambiamos de posición el ratón.

Esta desarrollada en Visual Basic.NET haciendo uso del Framework 1.1. Para implementarlo hice uso del API de windows.

En la sección de descargas podréis obtener tanto el código fuente como los binarios de al aplicación.

Este es el aspecto que tiene la herramienta:

Herramienta Color.
Herramienta Color.

 

Primeros pasos en 3D

Martes 4 de Septiembre de 2007 a las 23:59

Hasta el momento no había realizado ninguna incursión en el mundillo de las 3D con DirectX. Recientemente me ha picado el gusanillo y me he puesto a realizar un pequeño experimento en 3D. La idea es crear una especie de simulador de vuelo muy básico ya que no pretendo crear un juego decente sino simplemente aprender algo sobre la programación en 3D.

Por lo tanto de momento voy a aparcar el desarrollo de la aventura gráfica y me voy a centrar en este sencillo juego.

Según vaya realizando avances colocaré algunas capturas.

Arkanoid

Viernes 8 de Septiembre de 2006 a las 23:59

El clásico Arkanoid. Está desarrollado con Visual Basic.NET utilizando el framework 1.1. Este sencillo juego lo implementé a finales del 2004, después de finalizar el Tetris y me llevó muy poco tiempo. Consta únicamente de 727 líneas.

La nave puede ser manejada tanto con el teclado como con el ratón. Según destruyes ladrillos se va descubriendo una imagen tapada inicialmente por un telón negro y se van adquiriendo puntos. El jugador comienza con tres vidas que irá perdiendo cuando no consiga alcanzar la pelota con la nave. No consta más que de un nivel, aunque sería muy sencillo agregarle nuevos niveles.

Usa un único sonido que se reproduce al impactar la pelota contra los ladrillos y solo consta de tres imágenes: la pelota, la nave y el ladrillo (además de la imagen que se descubre a la derecha). Los gráficos se dibujan utilizando GDI+ con la técnica del doble buffer para evitar los molestos parpadeos. Soy conciente de las deficiencias de los gráficos, pero mis habilidades con el paint no dan para más.


Tetris.
(Pulsad la imagen para verla a tamaño real)
Arkanoid.


Tetris

Miércoles 30 de Agosto de 2006 a las 23:54

Este pequeño juego lo desarrollé hace ya bastante tiempo, a finales del 2004. Esta programado en Visual Basic .Net con el framework 1.1.

No tiene nada de especial, es el típico tetris. Permite establecer el nombre del jugador y guarda las mejores puntuaciones. Según se van consiguiendo puntos se va subiendo de nivel con lo que la velocidad de caída de las fichas aumenta y por lo tanto la dificultad. Pese a su sencillez es bastante adictivo.

Solo cuenta con 1178 líneas de código. Para dibujar los gráficos se utiliza GDI+ usando la técnica del doble buffer. El juego no contiene más imágenes que la del icono del ejecutable ya que los gráficos son cuadrados y líneas.


Tetris.
Tetris.