Veréis, estuve viendo un poco de Cairo y los ejemplos de la web. Son iguales ( casi ) a los de nuestro ejemplo Painting en Gambas.
Parece que lo modificaron ciertas cosas. Por ejemplo el ejemplo del arco en el de gambas, el arco está invertido.
Pero eso no es todo. Hay cosas que en el ejemplo de gambas no he llegado a comprender. ( Es que no hace nada , ademas de ampliar el código ).
Este es el ejemplo del arco en Painting.
Public Sub Example1()
Dim XC As Float = 128
Dim YC As Float = 128
Dim Radius As Float = 100
Dim Angle1 As Float = Rad(-45)
Dim Angle2 As Float = Rad(-180)
Dim X, Y As Float
Paint.LineWidth = 10
Paint.Arc(XC, YC, Radius, Angle1, Angle2 - Angle1)
Paint.Stroke
'Draw helping Lines
Paint.LineWidth = 6.0
Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255))
Paint.Arc(XC, YC, 10.0)
Paint.Fill
Paint.Arc(XC, YC, Radius, Angle1, 0)
X = Paint.X
Y = Paint.Y
Paint.Arc(XC, YC, Radius, Angle2, 0)
Paint.LineTo(XC, YC)
Paint.LineTo(X, Y)
Paint.Stroke
End
Dim XC As Float = 128
Dim YC As Float = 128
Dim Radius As Float = 100
Dim Angle1 As Float = Rad(-45)
Dim Angle2 As Float = Rad(-180)
Dim X, Y As Float
Paint.LineWidth = 10
Paint.Arc(XC, YC, Radius, Angle1, Angle2 - Angle1)
Paint.Stroke
'Draw helping Lines
Paint.LineWidth = 6.0
Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255))
Paint.Arc(XC, YC, 10.0)
Paint.Fill
Paint.Arc(XC, YC, Radius, Angle1, 0)
X = Paint.X
Y = Paint.Y
Paint.Arc(XC, YC, Radius, Angle2, 0)
Paint.LineTo(XC, YC)
Paint.LineTo(X, Y)
Paint.Stroke
End
La salida es esta:
Bien. Este es el ejemplo que he traducido de los ejemplos de Cairo. El mismo, el del arco.
'Recordar siempre que el punto 0,0 es la esquina superior izquierda
'Cuando traza el arco es igual, hacia abajo
Public Sub Dibujar()
Dim xc As Float = 128
Dim yc As Float = 128
Dim radius As Float = 100
Dim angle1 As Float = Rad(45)
Dim angle2 As Float = Rad(180)
Me.Title = "Arco"
'Ancho de la linea
Paint.LineWidth = 10
'Dibuja el arco desde 45º hasta 180º
Paint.Arc(xc, yc, radius, angle1, angle2 - angle1)
Paint.Stroke
' La brocha con el color que vamos a pintar y el tamaño del pincel
Paint.Brush = Paint.Color(Color.RGB(255, 255 * 0.2, 255 * 0.2, 255 * 0.6))
Paint.LineWidth = 6
'Dibuja el circulo pequeño
Paint.Arc(xc, yc, 10.0)
Paint.Fill
'Posiciona el cursor (No dibuja circulo)
Paint.Arc(xc, yc, radius, angle1, 0)
'Traza la linea desde la posicón del cursor a la coordenada xc,yc
Paint.LineTo(xc, yc)
'Posiciona el cursor (No dibuja circulo)
Paint.Arc(xc, yc, radius, angle2, 0)
'Traza la linea desde la posicón del cursor a la coordenada xc,yc
Paint.LineTo(xc, yc)
Paint.Stroke
End
Public Sub drw_Draw()
Dibujar()
End
'Cuando traza el arco es igual, hacia abajo
Public Sub Dibujar()
Dim xc As Float = 128
Dim yc As Float = 128
Dim radius As Float = 100
Dim angle1 As Float = Rad(45)
Dim angle2 As Float = Rad(180)
Me.Title = "Arco"
'Ancho de la linea
Paint.LineWidth = 10
'Dibuja el arco desde 45º hasta 180º
Paint.Arc(xc, yc, radius, angle1, angle2 - angle1)
Paint.Stroke
' La brocha con el color que vamos a pintar y el tamaño del pincel
Paint.Brush = Paint.Color(Color.RGB(255, 255 * 0.2, 255 * 0.2, 255 * 0.6))
Paint.LineWidth = 6
'Dibuja el circulo pequeño
Paint.Arc(xc, yc, 10.0)
Paint.Fill
'Posiciona el cursor (No dibuja circulo)
Paint.Arc(xc, yc, radius, angle1, 0)
'Traza la linea desde la posicón del cursor a la coordenada xc,yc
Paint.LineTo(xc, yc)
'Posiciona el cursor (No dibuja circulo)
Paint.Arc(xc, yc, radius, angle2, 0)
'Traza la linea desde la posicón del cursor a la coordenada xc,yc
Paint.LineTo(xc, yc)
Paint.Stroke
End
Public Sub drw_Draw()
Dibujar()
End
La salida fue esta:
Ok, nuestros compañeros y maestros querían el arco invertido.
Peeero. Hay algo en el código del ejemplo en gambas de nuestros maestros, que no tiene uso.
La variable X e Y y el trazado de la línea. No son necesarias..entonces..?
A ver si vosotros le veis algo distinto.
La idea es buena si quieres saber el ultimo punto donde se ha dibujado. Pero por lo demás en el ejemplo..
¿ Código redundante ?
Saludos