Page 1 of 1

BORRAR

Posted: Wed Mar 31, 2021 6:15 pm
by SALINETAS24
Hola a todos,
¿sería posible borrar un cuadro o una linea que ha sido dibujado con cualquiera de estas dos instrucciones, sin tener que borrarlo toda la pantalla..?

Gracias

Code: Select all

      DRAW LINE IN WINDOW <WindowName> AT <nRow>,<nCol>
            TO <nRow>,<nCol>
            [ PENCOLOR <anPenColor> ]
            [ PENWIDTH <nPenWidth> ]
 
      DRAW RECTANGLE IN WINDOW <WindowName> AT <nRow>,<nCol>
            TO <nRow>,<nCol>
            [ PENCOLOR <anPenColor> ]
            [ PENWIDTH <nPenWidth> ]
            [ FILLCOLOR <anFillColor> ]


Re: BORRAR

Posted: Thu Feb 15, 2024 5:40 pm
by LOUIS
Hola Amigo Salinetas

Sabe no tengo idea de solucionar lo suyo, aunque leí en otro post suyo mismo que decía que no se puede borrar los DRAW :roll:

Sin embargo, tengo una duda a ver si ud la puede despejar, quiero dibujar un círculo con Draw Ellipse, pero que sea transparente, o sea si tengo un número o letra previamente pintada, este círculo la encierre pero permitiendo ver su interior o contenido.

Si sabe, deme una manito y vamos con esa cervecita :mrgreen:

Saludos
Louis

P.D.- Ahora me doy cuenta que si hago el círculo con Draw, luego se quedará en la pantalla, al continuar el juego :oops:

Re: BORRAR

Posted: Fri Feb 16, 2024 12:53 pm
by gfilatov
LOUIS wrote: Thu Feb 15, 2024 5:40 pm Hola Amigo Salinetas

Sabe no tengo idea de solucionar lo suyo, aunque leí en otro post suyo mismo que decía que no se puede borrar los DRAW :roll:

Sin embargo, tengo una duda a ver si ud la puede despejar, quiero dibujar un círculo con Draw Ellipse, pero que sea transparente, o sea si tengo un número o letra previamente pintada, este círculo la encierre pero permitiendo ver su interior o contenido.

Si sabe, deme una manito y vamos con esa cervecita :mrgreen:

Saludos
Louis

P.D.- Ahora me doy cuenta que si hago el círculo con Draw, luego se quedará en la pantalla, al continuar el juego :oops:
Hola Louis,

Thanks for your request :!:

This is possible if you use your own erase handling instead of the ERASE WINDOW command.

For example, you can use the AddDelGraph() function as below, i.e.

Code: Select all

   DRAW LINE IN WINDOW draw AT 10, 10 TO 500, 500
   AddDelGraph( cForm ) // add line
...
   // Delete some lines and redraw graph
   AddDelGraph( cForm, "D" ) // delete added lines
   AddDelGraph( cForm, "R" ) // redraw form
Please see the attached working sample along with its source. :arrow:

Re: BORRAR

Posted: Fri Feb 16, 2024 5:28 pm
by LOUIS
Hellow Mr. Grigory Filatov

Thank you very much for your kind answer.

No entendí muy bien su solución :oops:
Pero me dió una idea fantástica, para mí
A continuación comparto mi solución (gracias a Ud).

Code: Select all

#include "hmg.ch"

Function Main()
  DEFINE WINDOW ABC AT 0,0 WIDTH 500 HEIGHT 500 BACKCOLOR {0,125,250} MAIN
    @ 050,100 BUTTON B1 CAPTION 'DIBUJA' WIDTH 100 HEIGHT 40 ONCLICK DIBUJA()
    @ 050,220 BUTTON B2 CAPTION 'DESDIBUJA' WIDTH 100 HEIGHT 40 ONCLICK DESDIBUJA()
    @ 150,100 LABEL L1 VALUE "69" WIDTH 60 HEIGHT 50 FONT "TAHOMA" SIZE 36 BOLD FONTCOLOR WHITE TRANSPARENT
    ON KEY ESCAPE ACTION ABC.Release
  END WINDOW
  ABC.MAXIMIZE
  ABC.ACTIVATE
Return

*--------------
Function DIBUJA
DRAW LINE IN WINDOW ABC AT 158,098 TO 158,163				// ARRIBA
DRAW LINE IN WINDOW ABC AT 158,098 TO 202,098				// LADO IZQ
DRAW LINE IN WINDOW ABC AT 158,163 TO 202,163				// LADO DER
DRAW LINE IN WINDOW ABC AT 202,098 TO 202,163				// ABAJO

*-----------------
Function DESDIBUJA
DRAW LINE IN WINDOW ABC AT 158,098 TO 158,163 PENCOLOR {0,125,250}	// ARRIBA
DRAW LINE IN WINDOW ABC AT 158,098 TO 202,098 PENCOLOR {0,125,250}	// LADO IZQ
DRAW LINE IN WINDOW ABC AT 158,163 TO 202,163 PENCOLOR {0,125,250}	// LADO DER
DRAW LINE IN WINDOW ABC AT 202,098 TO 202,163 PENCOLOR {0,125,250}	// ABAJO
Regards
Louis

P.D.- Si la Function DIBUJA estuviera en modo BLINKER sería Fabuloso ...