https://foro.gambas-es.org/viewtopic.php?f=1&t=2807
-----------------------------------
Shell
Lunes, 07 Enero 2013, 01:41

Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola!.

A partir de la versión 3.4 la clase Draw parece que queda obsoleta y debe usar la clase Paint.

http://gambasdoc.org/help/comp/gb.qt4/draw?es&v3

Saludos


-----------------------------------
Shell
Lunes, 07 Enero 2013, 11:53

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
¿ Que debería hacer ?.

¿ Estudiar la nueva clase Paint o dedicarme a buscar otra alternativa con Gambas si es que es posible ?.

Hasta ahora hice dibujos usando Draw, ahora lo que hacia ya no puedo hacerlo de la misma manera.
Si aprendo la nueva clase, puede que de aquí a x tiempo, otra vez, la clase se quede obsoleta y vuelta
a empezar. Me parece muy bien que se mejore, pero por otro lado es una "gracia". Debe ser que la
programación es así de "jodida", sobre todo si no esta bien documentada.

Que por cierto se complica mas, añadiendo otras nuevas posibilidades muy buenas.
Pero es como empezar de 0.Por ahora no me entero ni de la mitad que veo.No sabia
ni como trazar una linea.Añadiendo mas perdida de tiempo para volver hacerlo.
Ale, a ver el ejemplo de dibujo para la 3.9

A este paso, seria mejor conocer una librería común a todo el sistema operativo para dibujar, 
aprovechar sus recursos si son posibles usar en gambas y olvidarme de una clase exclusiva dedicada
a gambas para dibujar que se queda obsoleta al cabo del tiempo.Me rompe todos los esquemas.


Saludos.


-----------------------------------
jsbsan
Lunes, 07 Enero 2013, 12:29

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Shell
[quote]Estudiar la nueva clase Paint...[/quote]
Si es mucho más potente...

[quote]a ver el ejemplo de dibujo para la 3.9[/quote]
No, ya hay un ejemplo se llama "Painting"
[img]https://lh6.googleusercontent.com/-WbC-JBPmtPk/UOqzAKontAI/AAAAAAAACd8/wMUiqN6CgVk/s696/painting%2520ejemplo.png[/img]

[quote]No sabia ni como trazar una linea.Añadiendo mas perdida de tiempo para volver hacerlo.[/quote]
Mira, he hecho un pequeño ejemplo, para que veas la diferencia entre el codigo de draw y el de paint, y veras que el dibujo de paint es mucho mas "definido"
[img]https://lh6.googleusercontent.com/-l775b5yuSoE/UOqxHrklndI/AAAAAAAACdk/fFWbmwFbIxg/s794/metodos%2520paint%2520vs%2520draw.png[/img]

[quote]Si aprendo la nueva clase, puede que de aquí a x tiempo, otra vez, la clase se quede obsoleta y vuelta
a empezar. Me parece muy bien que se mejore, pero por otro lado es una "gracia". Debe ser que la
programación es así de "jodida", sobre todo si no esta bien documentada.[/quote]
Si la programación es asi... en java,html, etc.. pasa lo mismo las palabra "obsoleto" se repite una y otra vez...

El codigo del ejemplo: 
[code linenumbers=false syntax=gambas]'Con PAINT
  Paint.Begin(DrawingAreaPaint)
  Paint.LineWidth = 6
  
  Paint.Brush = Paint.Color(Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255))
  Paint.MoveTo(10, 10)
  Paint.LineTo(200, 10)
  Paint.stroke 'traza (dibuja)  las ordenes anteriores
  
  Paint.Brush = Paint.Color(Color.red)
  Paint.MoveTo(20, 15)
  Paint.LineTo(200, 50)
  Paint.stroke 'traza (dibuja)  las ordenes anteriores
  
  Paint.LineWidth = 0.8  'defino un nuevo ancho para el texto
  Paint.Text("Usando Paint", 10, 100)
  Paint.stroke
  Paint.end[/code]

[code linenumbers=false syntax=gambas]'Con Draw:
 Draw.Begin(DrawingAreaDraw)
  Draw.foreground = Color.RGB(255, 0.2 * 255, 0.2 * 255, 0.6 * 255)
  Draw.lineWidth = 6
  Draw.Line(10, 10, 200, 10)
  Draw.foreground = Color.red
  Draw.Line(20, 15, 200, 50)
  Draw.Text("Usando Draw", 10, 100)
  Draw.end
  [/code]


-----------------------------------
jsbsan
Lunes, 07 Enero 2013, 13:18

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Lo que no encuentro es la orden que sea similar  a draw.clear()  (limpiar la pantalla),

 ¿sabeis como se limpia la pantalla con paint?

[b]Añadido:[/b]
Se me ha ocurrido dibujar un rectangulo relleno de color blanco, para que borre, pero parece que la orden 
paint.fillrect
no funciona (aunque esta descrita en gambasdoc)
¿será un bug?

[b]Lo que si funciona es esto:[/b]
  paint.Rectangle(0, 0, Me.h, Me.w)
  Paint.LineWidth = 0
  Paint.Brush = Paint.Color(Color.white) 'mi color de fondo es blanco (white), por lo tanto es como si lo borrara
  Paint.Fill(True)

 :!:  :!:  pantalla borrada  :!:  :!:  :!:


-----------------------------------
Shell
Lunes, 07 Enero 2013, 15:06

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Muchas gracias Julio.

Estuve viendo ejemplos, lo poquito que podemos ver,documentarlo seria lo bueno.

El problema no es hacerlo con Paint, el verdadero problema que yo veo, es por ejemplo:

Tu haces una aplicación para dibujar una figura geométrica de un cubo.Haces tus rutinas para
girarlo, mostrarlo.Y has empleado mucho tiempo, te has molestado en buscar otros ejemplos, has
tenido que aprender parte de geometría, calculo,etc.

Todas esta aplicación esta construida de alguna manera usando una librería que es exclusivamente
para Gambas.Si tu u sabes que existe el opengl,que se maneja de una manera y que Gambas le
da un soporte, mejor aprovechar esa oportunidad.Solo que tiene de por medio la traducción que hace
Gambas para llegar a usar las librerías opengl.

Digamos que es mejor para largo plazo.

No estoy muy puesto. Otro ejemplo. Si Linux usa unas librerías estandars para hacer dibujos 2D.

http://gambasdoc.org/help/comp/gb.cairo?es&v3

Creo que si cualquier lenguaje a su manera, ya sea C, Python,Java,etc, hace una llamada
a estas librerías y aprovecha los recursos que son muy potentes puede ser mejor para
el programador usar estas.

Desde luego, Paint es mejor que Draw.

Lo mismo el creador de Gambas ha hecho una aproximación a esa librería de dibujo 2D.
Tampoco es mala idea de que el programador quiera acostumbrarnos a usar unas sentencias
muy similares a la usadas para una librería como Cairo y al final con el paso del tiempo, queden estas
para siempre en el lenguaje de Gambas, descartando otras del propio Gambas por obsoletas

Es una manera de avanzar.

Saludos.


-----------------------------------
Alaplancha
Miercoles, 09 Enero 2013, 22:55

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola amigos,

no entiendo muy bien qué significa en inglés "deprecated"... Si significa que todas la líneas de código en las que habíamos utilizado Draw hay que cambiarlas para adaptarse a Paint, obligatoriamente, porque Draw se autodestruirá automáticamente después de 10 segundos de aparecer la versión 3.4, me parece una faena. Lo más lógico sería que un programa hecho en una versión más antigua de Gambas siguiera funcionando en una más moderna, sin tener que cambiar nosotros ninguna línea de código, o al menos que esto fuese así durante un plazo razonable.

Por otro lado echo en falta en la comunidad una buena documentación de Gambas en general, no tan escueta como la oficial, y sobre todo con ejemplos. 

Saludos


-----------------------------------
Shell
Jueves, 10 Enero 2013, 01:34

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Alaplancha:

[quote]
The Draw clase is deprecated since Gambas 3.4. It is now emulated through the Paint class.
[/quote]

Puedes llevarte la sorpresa de que algo no funcione con la clase Draw.

Paint es como una versión próxima al componente Cairo.Cairo incorpora bastantes funciones que
lo mas probable que el autor quiera que los programadores de Gambas nos vayamos acostumbrando
a una sintaxis determinada a trabajar con los gráficos de un forma, para quien sabe, en un futuro, directamente
usar los componentes de gráficos y la clase Paint desaparezca.

Imagina diferentes lenguajes cada uno con diferentes maneras de hacer un dibujo con librerías,clases dedicadas a
ese lenguaje en concreto.Y en cambio a lo mejor tenemos en Linux una librería que esta especializada en gráficos
y todos los lenguajes la usan a su manera, aprovechando esos recursos "comunes".

¿ No seria mas practico aprender a usar esa librería  común mas que reinventar la rueda ?.

Tienes que ver también que Paint es mejor que Draw. Se aplica suavizado, cosa que Draw no solía hacer.
Tiene funciones que el otro no hacia.Ahora compara esto:

http://gambasdoc.org/help/comp/gb.qt4/paint?es&v3

(Es curioso que diga muy cerrada, yo diría próxima)

y

http://gambasdoc.org/help/comp/gb.cairo/cairo?es&v3

Ahora fijate que tenemos para componentes gráficos 2D todo estos componentes:

Gráficos 2D

gb.cairo 	Dibujos vectoriales basados en Cairo
gb.image 	Componente de gestión de imágenes
gb.image.imlib 	Rutinas de imagen basadas en la librería Imlib2
gb.image.io 	Carga y almacenamiento de imágenes
gb.image.effect 	Rutinas de filtrado de imagen
gb.v4l 	Capturador de video basado en Video4Linux 

Y ahora entra en gb.cairo.

http://gambasdoc.org/help/comp/gb.cairo?es&v3

Las posibilidades para trabajar con gráficos son mucho mayores con este componente.


Saludos.


-----------------------------------
jsbsan
Jueves, 10 Enero 2013, 19:23

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Alaplancha:

[quote]no entiendo muy bien qué significa en inglés "deprecated"... [/quote]
Tampoco se la traducción exacta, yo diria que es "quedándose obsoleto". O sea que dentro de poco (en próximas versiones de gambas3) puede ser que ya no funcione la clase draw.

[quote]"Lo más lógico sería que un programa hecho en una versión más antigua de gambas siguiera funcionando en una más moderna, sin tener que cambiar nosotros ninguna línea de código, o al menos que esto fuese así durante un plazo razonable."[/quote]
Cada poco tiempo aparecen nuevas tecnologías, o cambian las APIS y los lenguajes (o librerias que usan), dejan de funcionar teniéndose que actualizarse para recoger estos nuevos cambios.  La informática esta en pleno desarrollo y evolución actualmente.


Ayer, sin ir mas lejos, para que veas que pasa en todos los lenguajes (java, html, etc..), estaba viendo un video tutorial de python sobre como hacer un programa para acceder a los mensajes de twitter... y a la vez ,yo estaba escribiendo el código que decian... A ellos le funcionó pero a mi no... despues de revisarlo una y otra vez... recorde que hace poco twitter cambio su API de programación, con lo cual lo que decian en el video ya no se podia hacer como lo estaban explicando... total que perdi el tiempo  :shock: 

[quote]Por otro lado echo en falta en la comunidad una buena documentación de gambas en general, no tan escueta como la oficial, y sobre todo con ejemplos.[/quote]
Hace un par de años, también escribi algo similar a lo que dices....... :roll: 
En el foro ha habido gente que aportó muchos tutoriales interesantes (mirate las entradas de Soplo, por ejemplo)....   y yo he aportado lo que he podido (ejemplos, videotutoriales para iniciarse)...
No se si en las listas de gambas en ingles hay más información sobre el lenguaje y/o componentes, supongo que algo habrá....
Tambien está el libro de "A Beginner's Guide to Gambas.Revised for version 3", aunque es para iniciarse... 
Te aconsejo que veas (y estudies) tambien los ejemplos que trae el propio IDE de gambas, que seguro que encuentras cosas interesantes.
Si te surgen dudas, o no sabes como hacer algo, preguntalo en el foro, con suerte alguien te responderá o de dará alguna idea de como hacerlo...


-----------------------------------
Shell
Jueves, 10 Enero 2013, 20:45

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Julio:

Preguntabas como limpiar el DrawingArea. Directamente escribes el nombre del componente y usas el método Clear
Después de limpiar se queda el color de fondo. Se podría hacer al principio de comenzar cada dibujo.

Estoy intentando hacer un dibujo pero sin tener la propiedad Cached a true y me encuentro siempre el error de
que no sabe en que componente debe dibujar. Se que hay dos maneras, cuando su valor es false, debemos hacer 
un refresco del componente.Con la propiedad Cached a true no tengo problema.

Estuve mirando el ejemplo de Painting y no encuentro por ningún lado del código el método Paint.Begin :!: 
Se ven las instrucciones de dibujo, pero no se ve esa instrucción en concreto.

Existe el método Draw, pero lo esta utilizando para la escala y rotación del dibujo.

Y es que para dibujar se debe usar Paint.Begin(componente)..Paint.end.

Saludos.


-----------------------------------
jsbsan
Jueves, 10 Enero 2013, 22:01

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Shell

[quote]como limpiar el DrawingArea. Directamente escribes el nombre del componente y usas el método Clear[/quote]
Osea que si el drawingArea, se llama "AreaDeDibujo", con poner "AreaDeDibujo.clear()", se borra el contenido...  :roll: 

Lo he probado, pero no consigo el efecto que necesito   :cry:

[quote]Y es que para dibujar se debe usar Paint.Begin(componente)..Paint.end.[/quote]
Pues si, es raro... lo que he visto es que en las propiedades del DrawingArea1, esta puesto la propiedad "Cached" como "false" y la propiedad "painted" como "true"...a lo mejor tiene que ver algo con eso, que  sepa Paint donde tiene que "empezar" a dibujar...


-----------------------------------
jguardon
Viernes, 11 Enero 2013, 00:11

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
[quote user="Shell" post="15950"]Julio:

Estoy intentando hacer un dibujo pero sin tener la propiedad Cached a true y me encuentro siempre el error de
que no sabe en que componente debe dibujar. Se que hay dos maneras, cuando su valor es false, debemos hacer 
un refresco del componente.Con la propiedad Cached a true no tengo problema.

Estuve mirando el ejemplo de Painting y no encuentro por ningún lado del código el método Paint.Begin :!: 
Se ven las instrucciones de dibujo, pero no se ve esa instrucción en concreto.

Existe el método Draw, pero lo esta utilizando para la escala y rotación del dibujo.

Y es que para dibujar se debe usar Paint.Begin(componente)..Paint.end.

Saludos.[/quote]

Cuando se usa la propiedad cached = false es porque vamos a dibujar dentro del evento _Draw(), por eso no hace falta el método Paint.Begin ni .End.

Cada vez que se dispara el evento draw se redibuja todo lo que haya dentro del mismo o dentro de otras funciones que se llamen desde dentro de ese evento. No sé si se me comprende... hay que pensar que el evento draw se dispara siempre que es necesario (bien porque el formulario se mueve, se redimensiona o se tapa y destapa con otro elemento gráfico, o bien porque llamamos explícitamente al método refresh. De esta forma nos tenemos que imaginar dicho evento como una especie de loop infinito donde hacemos lo necesario para que todo se dibuje y coloque correctamente. Para ello hay que pensar en el uso de flags (banderas) que según su condición (booleana o lo que queramos) permitirá o condicionará qué, cuándo y cómo se van a dibujar las cosas.

Hace poco puse un fragmento en gambas2 que aunque usa la clase antigua Draw, se emplea el evento _Draw() para dibujar. El concepto es el mismo en gambas3.

Saludos


-----------------------------------
Shell
Viernes, 11 Enero 2013, 00:43

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Jesús:

Eso es.

En el caso del ejemplo Painting.Utiliza una matriz de controles de optbuttons o radiobuttons que pertenecen al grupo "ejemplo".
Luego están los procedimientos que hacen una función determinada. ejemplo1 dibuja un arco, ejemplo2 dibuja una foto por ejemplo.

Cuando hace click en un radiobutton, se almacena en la variable de cadena el nombre del ejemplo mas el numero del indice (tag) del botón.
Hace un refresh y se activa Draw, ejecuta su código que incluye esto:

[code linenumbers=false syntax=gambas]
...
Object.Call(Me, $sFunctionName)
...
[/code]

Dentro del mismo código de evento Draw tiene la referencia del objeto DrawingArea y el nombre de la función o procedimiento
y todo se ejecuta dentro del evento Draw, cambiando naturalmente el nombre de la función desde:

[code linenumbers=false syntax=gambas]
Public Sub optExample_Click()

  $sFunctionName = "Example" & Last.tag
  Try Editor1.text = File.Load($sFunctionName)
  If Error Then Editor1.Text = Error.Text
  DrawingArea1.Refresh

End
[/code]

Saludos.


-----------------------------------
Alaplancha
Viernes, 11 Enero 2013, 15:13

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola amigos,

he estado probando el Paint y, depende de para qué, no me convence. La opción de antialiasing [url=http://es.wikipedia.org/wiki/Antialiasing]Antialiasing - Wikipedia es interesante para los gráficos de mapa de bits, pero no siempre lo es para los gráficos vectoriales. El tratamiento antialiasing suaviza los bordes de una figura para difuminarlos con su fondo. Pero para un dibujo técnico de líneas, este efecto de antialiasing hace que todo se vea borroso y confuso. Para los que estéis familiarizados con los programas CAD, imaginaos lo que sería ver un segmento de espesor mínimo difuminado en sus bordes con su fondo. Un horror, un dolor de cabeza constante. Nadie trabaja así. Ningún programa de CAD (y tienen ya sus añitos) ha optado por el antiliasing, por algo será. Las líneas escalonadas tienen su razón de ser y su utilidad en los dibujos técnicos, no es por capricho. 

[strike]Me gustaría que Benoît reflexionase sobre este aspecto, antes de dar por obsoleto el Draw.[/strike] 

Un saludo


-----------------------------------
Shell
Viernes, 11 Enero 2013, 19:52

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Alaplancha:

Ah, pero creo que si quieres no tienes por que tener suavizado.
Tienes la propiedad Antialias:

http://www.gambasdoc.org/help/comp/gb.qt4/paint/antialias?v3

Que en gb.Cairo esta mejor explicada, se ve claramente hacia donde vamos, Cairo!.

http://www.gambasdoc.org/help/comp/gb.cairo/cairo/antialias?v3

A ti te gusta el tema del Cad. Mira este:

http://www.gambasdoc.org/help/app/kedicad?es&v3

;-)

Saludos.


-----------------------------------
Alaplancha
Viernes, 11 Enero 2013, 20:19

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola Shell,

uf, ¡gracias! Por Tutatis, entonces está muy bien, pudiendo elegir entre las dos opciones.

Gracias también por lo del enlace del CAD. La verdad es que es muy interesante e ilusionante ver cómo van avanzando y mejorando las alternativas al software privativo.

Saludos.


-----------------------------------
jsbsan
Viernes, 11 Enero 2013, 21:17

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Alaplancha:
[quote] y mejorando las alternativas al software privativo.[/quote]
A mi tambien me gustan los programas de CAD, pero KediCAD , no es softwarelibre, (el autor no deja ver el codigo fuente), es una lástima porque es un programa "impresionante"


-----------------------------------
jguardon
Sabado, 12 Enero 2013, 11:55

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
[quote user="jsbsan" post="15971"]
A mi tambien me gustan los programas de CAD, pero KediCAD , no es softwarelibre, (el autor no deja ver el codigo fuente), es una lástima porque es un programa "impresionante"[/quote]

Además está escrito en gambas2. Yo lo he probado y francamente no me gusta, es bastante raro y no funciona demasiado bien. Desde luego, le queda mucho para superar a [url=http://librecad.org/cms/home.html]LibreCAD, que por ahora no tiene rival y además es multiplataforma. Naturalmente está hecho en C++.

Parece evidente que para un proyecto de esas características es necesario trabajar en equipo. Un solo desarrollador nunca será capaz de llegar a crear algo tan complejo en un tiempo razonable.


Por cierto, volviendo al hilo, me parece que Benoit ha hecho un buen trabajo con la clase Paint, incorporando cantidad de características que se echaban de menos en la clase Draw, que por cierto sigue funcionando (aunque con vistas a desaparecer definitivamente).

Saludos


-----------------------------------
Shell
Sabado, 12 Enero 2013, 14:23

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Jesús:

[quote user="jguardon" post="15976"]
Por cierto, volviendo al hilo, me parece que Benoit ha hecho un buen trabajo con la clase Paint, incorporando cantidad de características que se echaban de menos en la clase Draw, que por cierto sigue funcionando (aunque con vistas a desaparecer definitivamente).
[/quote]

Tu ya tienes que haber visto que vamos orientados a gb.cairo. Si ves este componente, la lcase Paint es una versión no muy breve, pero si un poco mas,
que todo lo que hace gb.cairo.

Entonces, "creo" que nuestro buen autor de Gambas, tenga pensado definitivamente un día que usemos exclusivamente  
para dibujar, gb.Cario. Quise preguntar esto en la lista de correo, pero aun no lo hice.Si tu ingles es mejor, adelante con la pregunta,
seria interesante que nos dice Benoit sobre el futuro del uso de gráficos en Gambas.

Lo que vemos es que al usar la clase Paint, Benoit ha documentado de alguna manera en el ejemplo de la aplicación Painting,
que novedades nos os ofrece la nueva clase.Poco a poco puede que esa idea sea de ampliar mas la clase Paint cada día mas
próximo a gb.Cario y abandonar definitivamente la clase Paint.

Saludos.


-----------------------------------
Alaplancha
Domingo, 20 Enero 2013, 13:26

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola de nuevo, amigos,

estoy practicando estos días con Paint. Para dibujar en un drawing area que he llamado dwa1 primero borro lo que había dibujado y después redibujo todas las líneas de mi dibujo:

[code linenumbers=false syntax=gambas]
FMain.dwa1.Clear ' Limpiamos el drawing area
Paint.Begin(FMain.dwa1) ' Iniciamos el metodo para pintar
' Aqui redibujamos las líneas
Paint.End ' Finalizamos el metodo para pintar
[/code]

El caso es que se produce un efecto de parpadeo si repito este código varias veces seguidas rápidamente. No sé si se debe al método Clear o al Paint. Pero no me pasaba con Draw, ha sido con Paint que me ha comenzado a pasar. ¿Sabéis por qué es esto? ¿Es porque Paint es más "lento" que Draw? ¿Existe otra manera de borrar el drawing area?

Saludos


-----------------------------------
jguardon
Domingo, 20 Enero 2013, 15:25

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Eso es porque estás usando el drawingarea en modo cacheado (con la propiedad cached=true) y así es más lento. Para poder usarla en modo cached = false hay que dibujar dentro del evento _Draw() del drawingarea, y no tendrás parpadeo.

Ya lo he explicado al menos un par de veces, una de ellas en este mismo hilo. Aquí otra reseña: http://foro.gambas-es.org/viewtopic.php?p=14832#p14832


No obstante si tienes dudas vuelve a preguntar.

Saludos


-----------------------------------
Alaplancha
Lunes, 21 Enero 2013, 22:45

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola Jesús,

gracias por tu respuesta. La verdad es que no acabo de entenderlo del todo bien. Mi drawing area se llama dwa1. He puesto en primer lugar como FALSE la propiedad Cached del drawing area, como me aconsejabas, para evitar ese parpadeo. Después he probado dos cosas, una me funciona y otra no. 

La que me funciona es coger todo el código que anteriormente tenía en un método de dibujo de un módulo y meterlo directamente en el evento Draw del drawing area (Si dwa1.Painted=FALSE debo incluir el Paint.Begin(Fain.dwa1)... Paint.End, pero si es TRUE no debo incluirlo porque me dará error). Cada vez que quiero dibujar llamo al método dwa1.Refresh. Con todo esto el parpadeo efectivamente desaparece. 

La que no me funciona es dejar el método de dibujo en el módulo en el que estaba (incluído el Paint.Begin(Fain.dwa1)... Paint.End), y llamar a ese método mediante el evento dwa1.Refresh. En este caso me da un error "Cannot paint outside od Draw event handler". Es decir, no entiendo cómo hacer que:

[quote]El truco consiste en crear métodos que dibujen lo que quieres y luego, dentro del evento _Draw llamas a esos métodos[/quote]

Saludos


-----------------------------------
jguardon
Lunes, 21 Enero 2013, 23:59

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Alaplancha

Sin ver tu código no puedo saber por qué no funciona lo que haces. Si te parece bien, sube tu proyecto como adjunto o bien me lo envías en privado o email para echar un vistazo.
Lo que nunca se debe hacer es usar Paint.Begin ni Paint.End cuando se usa el evento draw para dibujar. Ni dentro del mismo ni fuera de él, porque en realidad siempre se pinta lo que se está ejecutando dentro de dicho evento, aunque sean métodos llamados desde ahí.

Otro consejo es que estudies el programa de ejemplo que viene con gambas3, "Painting" , creo que te dará una visión más clara de lo que hablamos.

Saludos


-----------------------------------
Alaplancha
Martes, 22 Enero 2013, 08:34

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Hola Jesús,

te quiero enviar el ejemplo que estoy haciendo. He conseguido llamar a un método desde Draw, pero el método ha de tener dentro su Paint.Begin...Paint.End. Indudablemente algo estoy haciendo mal.

Saludos


-----------------------------------
Dani26
Martes, 22 Enero 2013, 20:20

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Pablo, tienes el panel de control de publicación de adjuntos debajo de las opciones del mensaje que estás escribiendo.
Saludos


-----------------------------------
Alaplancha
Martes, 22 Enero 2013, 20:29

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
Gracias, Dani,

uf, disculpad, no me aclaro todavía con el foro  :oops: 

Ahí va el pequeño ejemplo como adjunto.

Saludos.


-----------------------------------
jguardon
Martes, 22 Enero 2013, 23:23

Re: Clase Draw Obsoleta A Partir De Gambas 3.4
-----------------------------------
[quote user="Alaplancha" post="16084"]Hola Jesús,

te quiero enviar el ejemplo que estoy haciendo. He conseguido llamar a un método desde Draw, pero el método ha de tener dentro su Paint.Begin...Paint.End. Indudablemente algo estoy haciendo mal.

Saludos[/quote]

Estoy probando tu ejemplo y lo primero que hecho es quitar o comentar el Paint.Begin y Paint.End del método del Mod1 y como era de esperar no hay ningún error. Funciona como es debido y además desaparece un error que daba el programa al cerrarse cuando esas líneas estaban activas. El error era en la línea 14 "Invalid Object" sin más detalles.

Lo cual corrobora mi punto de vista. Por lo tanto, me inclino a pensar que puede ser un fallo en tu versión de gambas. Yo uso siempre versiones SVN compiladas manualmente, por si ayuda en algo saberlo, jeje

Saludos


