Autor

Tyler Gasve

Última Actualización

07/01/2010
Se ha prescindo de GetWindowRect y optado por ClientBounds para capturar la posición y tamaño de la Ventana XNA, no he apreciado ninguna mejoría usando la primera opción.
También se ha mejorado la redimensión de la ventana de Form00, ahora mas efectiva en el caso de tener una ventana XNA redimensionable (this.Window.AllowUserResizing = true)
No he apreciado que haya perjudicado significativamente el rendimiento con este cambio.

05/01/2010

GameComponent Form00

A veces, mientras realizamos nuestros proyectos de prueba nos vendría bien contar con controles que nos facilitasen la modificación y lectura de los parámetros en tiempo de ejecución.
Lo habitual en proyectos XNA es mostrar por pantalla los parámetros y las teclas a pulsar para modificarlos, siendo en ocasiones insuficiente o poco claro.
Form00 es un componente para XNA que muestra un formulario junto a la ventada del proyecto, pudiendo elegir entre cuatro posiciones de visualización y ocultarse.
Por ser un Componente es de fácil implementación, cargándose de forma habitual con “Components.add(…)”, y de fácil eliminación si se requiere, siendo independiente del proyecto.
La ventana del Form00 se adapta de forma automática a la resolución del proyecto, se ha pensado para no cargar en recursos al propio proyecto XNA, personalizarlo fácilmente con controles según las necesidades y comunicarse con la clase “Game” de forma clara y ordenada.
Form00 lleva integradas dos herramientas de propósito general:
Un Screenshot y un lector de FPS, permitiendo alternar dinámicamente la sincro vertical del GraphicsDevice.
No es preciso modificar la clase GameCompoForm para personalizar con controles Form00, la clase GameCompoForm se limita a controlar la ventana del Form00, contener las herramientas de propósito general y crear un “medio” de comunicación entre Game i Form00.
La personalización es tan simple como crear las propiedades públicas (get,set) en Game.
Añadir los controles en el Form00.
Cargar en el constructor de Form00 los parámetros iniciales. Get (Game->Form00)
En los eventos de los controles realizar las modificaciones de parámetros i devolverlos. Set (Form00->Game)
Para leer propiedades que cambian dinámicamente en Game, Form00 lleva un recolector donde poder capturar esas propiedades.
Eso es todo.

A modo de ejemplo he usado un proyecto de Partículas un poco ampliado (Extraído de XNACommunity, creado por J.Cantón) y le he añadido al Form00 los controles que he considerado para el ejemplo (TextBox, NumericUpDownun, ComboBox) y ya de paso un Button para cambiar el color de “fondo” de la ventana.

Requiere para su uso de las Referencias cargadas en el proyecto: (Add references .Net)
System.Windows.Forms
System.Data
System.Drawing

Espero que encontréis Form00 (sin alcohol) útil, saludos!!.

Descarga

GameComponent_Form00.rar - ( XNA GS 3.1)

Capturas

componentform_Form00.png

Video

Last edited Jan 7, 2010 at 12:39 PM by tyler10, version 14

Comments

No comments yet.