https://foro.gambas-es.org/viewtopic.php?f=1&t=5043&p=29272#p29272
-----------------------------------
Shell
Jueves, 17 Diciembre 2015, 21:59

Ejemplos De La Clase Paint. Painting
-----------------------------------
Buenas!.

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. 
[code linenumbers=false syntax=gambas]
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
[/code]

La salida es esta:

 [img]http://foro.gambas-es.org/files/images/768/arco_codigo_painting.png[/img] 

Bien. Este es el ejemplo que he traducido de los ejemplos de Cairo. El mismo, el del arco.

[code linenumbers=false syntax=gambas]
'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
[/code]

La salida fue esta:

 [img]http://foro.gambas-es.org/files/images/768/ejemploimplementadodecairo.png[/img] 

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


