Comunidad Gambas-es
Como se dispara el Evento Draw en el siguiente ejemplo? - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html)
+--- Tema: Como se dispara el Evento Draw en el siguiente ejemplo? (/thread-817.html)



Como se dispara el Evento Draw en el siguiente ejemplo? - AlfredoSC - 22-01-2022

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....


RE: Como se dispara el Evento Draw en el siguiente ejemplo? - cogier - 23-01-2022

Echa un vistazo a este código.


RE: Como se dispara el Evento Draw en el siguiente ejemplo? - vuott - 24-01-2022

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