Nuevos Métodos Gráficos para Proyectos Desktop

El siguiente artículo está traducido al castellano a partir del original, escrito por Paul Lefebvre, y publicado en el Blog de Xojo que puedes encontrar en este enlace.

Disponibles inicialmente en iOS, a partir de Xojo 2021 Release 1 también podrás utilizar los métodos Rotate, Translate, SaveState y RestoreState con los proyectos Desktop.

El método Rotate rota el dibujo en el ángulo indicado (en radianes). El siguiente código rota el área de dibujo 45 grados y dibuja un cuadrado para que parezca un rombo:

// Rotate a square around the center of the graphics area
Const Pi = 3.14159
g.Translate(g.Width / 2, g.Height / 2)
g.Rotate(Pi / 4) // 45 degrees or 1/8 of a circle
g.DrawingColor = Color.Blue
g.FillRectangle(10, 10, 50, 50)

Puedes utilizar Translate para cambiar el punto de origen de dibujado. Usado en combinación con Rotate, este código rota el cuadrado en torno a un punto central.

// Rotate square in center of graphics area
Const Pi = 3.14159
g.Translate(g.Width / 2, g.Height / 2)
g.Rotate(Pi / 4) // 45 degrees or 1/8 of a circle
g.DrawingColor = Color.Blue
g.FillRectangle(10, 10, 50, 50)

Con unos pocos retoques y un Timer, puedes animarlo (descarga el proyecto)

SaveState y RestoreState hacen lo que sus nombres implican. Te permiten guardar el estado del área gráfica de modo que pueda restaurarse posteriormente. SaveState puede guardar esta información:

  • Translate
  • Clip region
  • PenSize
  • AntiAliased
  • DrawingColor
  • Font
  • Underline
  • Rotate (rotation)

Este código dibuja un rectángulo de color azul, guarda el estado y luego dibuja un rectángulo de color rojo. Luego, llama a RestoreState para recuperar el color de nuevo a azul dibujando otro rectángulo en dicho color:

g.DrawingColor = Color.Blue
g.FillRectangle(10, 10, 20, 20)
g.SaveState
g.DrawingColor = Color.Red
g.FillRectangle(50, 50, 20, 20)
// Restore to state where FillColor is Blue
g.RestoreState
g.FillRectangle(10, 50, 20, 20)

Puedes encontrar que estos nuevos métodos pueden utilizarse como una alternativa a Object2D para determinados tipos de dibujos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *