Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Psyke1 en Septiembre 28, 2010, 01:46:46 pm

Título: No puedo borrar Brush
Publicado por: Psyke1 en Septiembre 28, 2010, 01:46:46 pm
A ver si me podeis ayudar con una dudas siiiiiimple de GDi:
El caso es que dibujo un rectangulo en la pantalla (ojo, no en el Form), pero no veo la manera de como borrarlo :o
Cuando estaba en en Form hacia:
Código: [Seleccionar]
Form1.RefreshYa he estado probando con varias opciones...

Muchas gracias!! :D

Título: Re:No puedo borrar Brush
Publicado por: Bazooka en Septiembre 28, 2010, 01:52:16 pm
Hola si con Form1.refresh funcionaba ahora deberias provar con nombrecontrol.refresh o nombrecontrol.cls donde nombrecontrol es por ejemplo picture1 si es que estas dibujando en un picture.
Título: Re:No puedo borrar Brush
Publicado por: Psyke1 en Septiembre 28, 2010, 02:10:03 pm
No, estoy dibujando en la pantalla, no sobre ningun control... :-\

DoEvents!
Título: Re:No puedo borrar Brush
Publicado por: LeandroA en Septiembre 28, 2010, 03:46:37 pm
hola podes utilizar  InvalidateRect  si vos estas utilizando GetDC(0&) entonces no tenes un hwnd para tal caso le pasa 0& como primer parametro esto le indica a la funcion que tiene que dibujar todas las ventanas

Código: (Vb) [Seleccionar]
Private Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As Any, ByVal bErase As Long) As Long
Código: (vb) [Seleccionar]
Option Explicit
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function Rectangle Lib "gdi32.dll" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As Any, ByVal bErase As Long) As Long

Private Sub Command1_Click()
    Dim DC As Long
    DC = GetDC(0&)
    Rectangle DC, 20, 20, 50, 50
    ReleaseDC 0&, DC
End Sub

Private Sub Command2_Click()
    InvalidateRect 0&, ByVal 0&, 0&
End Sub

Saludos.
Título: Re:No puedo borrar Brush
Publicado por: Psyke1 en Septiembre 28, 2010, 04:08:00 pm
Perfecto, LeandroA :D
Funciono!!! ;D
Título: Re:No puedo borrar Brush
Publicado por: Bazooka en Septiembre 28, 2010, 04:13:54 pm
Hola, perdon la ignorancia y para no quedarme con las dudas, pero si no dibujas en pantalla ni en formulario... para que es?

Saludos
hola podes utilizar  InvalidateRect  si vos estas utilizando GetDC(0&) entonces no tenes un hwnd para tal caso le pasa 0& como primer parametro esto le indica a la funcion que tiene que dibujar todas las ventanas

Código: (Vb) [Seleccionar]
Private Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As Any, ByVal bErase As Long) As Long
Código: (vb) [Seleccionar]
Option Explicit
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function Rectangle Lib "gdi32.dll" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As Any, ByVal bErase As Long) As Long

Private Sub Command1_Click()
    Dim DC As Long
    DC = GetDC(0&)
    Rectangle DC, 20, 20, 50, 50
    ReleaseDC 0&, DC
End Sub

Private Sub Command2_Click()
    InvalidateRect 0&, ByVal 0&, 0&
End Sub

Saludos.
Título: Re:No puedo borrar Brush
Publicado por: Psyke1 en Septiembre 28, 2010, 04:27:32 pm
@miguel
Dibujo en la pantalla, ya lo especifique antes

DoEvents! :P
Título: Re:No puedo borrar Brush
Publicado por: ssccaann43 en Septiembre 28, 2010, 04:34:30 pm
Jajajaja, PsyKe1, Ahora la rana es un cerebro??? Buena imagen..! ;D
Título: Re:No puedo borrar Brush
Publicado por: Psyke1 en Septiembre 28, 2010, 05:17:43 pm
jajajaj :D
No es el gallo de LeandroA pero esta bien ;)

DoEvents! :P
Título: Re:No puedo borrar Brush
Publicado por: YAcosta en Septiembre 29, 2010, 04:09:37 pm
Que excelente no sabia que esto se podía hacer,  lo he  probado y va bien, una pregunta: Bajo este metodo se pueden hacer con las letras? o habria que diseñar cada letra a mano? o solo es para las formas?
Título: Re:No puedo borrar Brush
Publicado por: LeandroA en Septiembre 29, 2010, 04:40:43 pm
Hola YvanB, si podes hacer practicamente lo que quieras dibujar formas, Texto, Imagen, es un hdc tal como lo tiene un picture box o un formulario, solo que la desventaja es que no sabes cuando se repinta esa parte de la pantalla por lo que hay que hacer un bucle y repintarlo constantemente.

Saludos.
Título: Re:No puedo borrar Brush
Publicado por: YAcosta en Septiembre 29, 2010, 05:14:11 pm
Hola YvanB, si podes hacer practicamente lo que quieras dibujar formas, Texto, Imagen, es un hdc tal como lo tiene un picture box o un formulario, solo que la desventaja es que no sabes cuando se repinta esa parte de la pantalla por lo que hay que hacer un bucle y repintarlo constantemente.

Saludos.

Muchas gracias, no se nada de hdc, así que voy a empezar a estudiarlo para hacer las preguntas adecuadas. Ahora si tienes algún link de principiantes de ese tema te lo agradecería mucho.
Título: Re:No puedo borrar Brush
Publicado por: LeandroA en Septiembre 30, 2010, 12:31:34 am
Es todo referido a apis de windows generalmente GDI y algunas de User32 te paso una web muy buena que me gusta como esta explicado.
http://www16.brinkster.com/eduroam/api/default.asp

En el capitulo III (http://www16.brinkster.com/eduroam/api/default.asp?pag=cap3) hay ejemplos graficos.

Saludos.
Título: Re:No puedo borrar Brush
Publicado por: YAcosta en Septiembre 30, 2010, 01:05:10 am
Muchísimas gracias.

Una rpeguntita final, porque estuve revisando la web que me indicaste y la verdad provoca mucho darle un tiempo diario para estudiarlo.
Pero quisiera saber (ya que aun no lo he leído a fondo) si puedo aplicar estos conocimientos haciendo aplicaciones que correrán sobre Windows 7. Yo supongo que si, pero no estoy seguro. Gracias
Título: Re:No puedo borrar Brush
Publicado por: raul338 en Septiembre 30, 2010, 11:23:42 am
Funcionan casi en todos los windows :P Fijate en el MSDN de cada funcion que tiene desde que SO cliente y server pueden ser soportados (igual, de 2000 en adelante seguro funcionan)