AlfredoSC   22-01-2022, 22:38
#1
Hola:

Estoy en el tema de poner un DrawingArea en un proyecto, en el cual quiero dibujar algunas funciones trigonométricas. Así que mirando en la web encontré este ejemplo, el cual no explica nada sobre cómo es que "corre solo". No requiere, según el ejemplo, de hacer click en ningún botón. Así no me lleva a comprender cómo funciona DrawingArea. Por favor si alguien me puede decir como aplicarlo?

Código:
' Gambas class file

Public activado As Boolean

Public Sub _new()
  
End

Public Sub Form_Open()
  
  ScrollArea1.ResizeContents(400, 400)
  ScrollArea1.Refresh
  ScrollArea1.Shadow = True 'sombra
  
End

Public Sub ScrollArea1_Draw()
  
  Paint.DrawText("hola mundo", 10 - ScrollArea1.ScrollX, 10 - ScrollArea1.Scrolly)
  Paint.DrawText("hola mundo", 100 - ScrollArea1.Scrollx, 100 - ScrollArea1.Scrolly, 200, 500)
  Paint.DrawRichText("<h1>Hola <font color=\"red\"> Mundo</font></h1>", 110 - ScrollArea1.ScrollX, 130 - ScrollArea1.Scrolly, 200, 200)
  Paint.MoveTo(100 - ScrollArea1.ScrollX, 100 - ScrollArea1.Scrolly)
  Paint.LineTo(10 - ScrollArea1.ScrollX, 39 - ScrollArea1.Scrolly)
  Paint.LineWidth = 3
  
  Paint.Rectangle(3 - ScrollArea1.ScrollX, 3 - ScrollArea1.Scrolly, 10, 100)
  Paint.Stroke()  
  Paint.MoveTo(100 - ScrollArea1.ScrollX, 100 - ScrollArea1.Scrolly)
  Paint.LineTo(10 - ScrollArea1.ScrollX, 139 - ScrollArea1.Scrolly)
  Paint.LineWidth = 1
  
  Paint.Rectangle(3 - ScrollArea1.ScrollX, 3 - ScrollArea1.Scrolly, 10, 100)
  Paint.Stroke()
  
  Paint.DrawText("Gambas3", 300 - ScrollArea1.Scrollx, 200 - ScrollArea1.Scrolly, 200, 500)
  Paint.DrawRichText("<h1><font color=\"blue\"> Gambas3</font></h1>", 110 - ScrollArea1.ScrollX, 230 - ScrollArea1.Scrolly, 200, 200)
  
End

Public Sub DrawingArea1_Draw()
  
  Paint.DrawText("hola mundo", 10, 10)
  Paint.DrawText("hola mundo", 100, 100, 200, 500)
  Paint.DrawRichText("<h1>Hola <font color=\"red\"> Mundo</font></h1>", 110, 130, 200, 200)
  Paint.MoveTo(100, 100)
  Paint.LineTo(10, 39)
  Paint.LineWidth = 3
  
  Paint.Rectangle(3, 3, 10, 100)
  Paint.Stroke()  
  Paint.MoveTo(100, 100)
  Paint.LineTo(10, 139)
  Paint.LineWidth = 1
  
  Paint.Rectangle(3, 3, 10, 100)
  Paint.Stroke()
  
End

Gracias....

Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
cogier   23-01-2022, 13:50
#2
Echa un vistazo a este código.
vuott   24-01-2022, 02:25
#3
En resumidas cuentas, el Evento "_Draw()" de la clase "DrawingArea" se eleva automáticamente:
Código:
Public Sub DrawingArea1_Draw()
 
  Print "Test"
 
End

Para levantar arbitrariamente el Evento "_Draw()" es necesario invocar el Método ". Refresh" de la Clase "DrawingArea":
Código:
Private i As Integer
Private pie As Boolean


Public Sub DrawingArea1_Draw()

  With Paint
    .Brush = .Color(i)
    .Arc(200, 200, 100.0, Rad(0), Rad(360), pie)
    .Stroke
    .End
  End With

End

Public Sub Button1_Click()

  i = Color.Red
  pie = True
  
  DrawingArea1.Refresh

End
Última modificación: 24-01-2022, 02:26 por vuott.

« Los horizontes perdidos nunca regresan. » (F. Battiato, 1983)

« Las ondas nunca regresan. » (Genesis: Ripples, 1976)

« Vita non suavis esse potest, nec Mors amara. »  (...vuott)
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.