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.