Autor Tema: No puedo borrar Brush  (Leído 7719 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
No puedo borrar Brush
« 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


Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:No puedo borrar Brush
« Respuesta #1 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.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:No puedo borrar Brush
« Respuesta #2 en: Septiembre 28, 2010, 02:10:03 pm »
No, estoy dibujando en la pantalla, no sobre ningun control... :-\

DoEvents!

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:No puedo borrar Brush
« Respuesta #3 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.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:No puedo borrar Brush
« Respuesta #4 en: Septiembre 28, 2010, 04:08:00 pm »
Perfecto, LeandroA :D
Funciono!!! ;D

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:No puedo borrar Brush
« Respuesta #5 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.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:No puedo borrar Brush
« Respuesta #6 en: Septiembre 28, 2010, 04:27:32 pm »
@miguel
Dibujo en la pantalla, ya lo especifique antes

DoEvents! :P

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:No puedo borrar Brush
« Respuesta #7 en: Septiembre 28, 2010, 04:34:30 pm »
Jajajaja, PsyKe1, Ahora la rana es un cerebro??? Buena imagen..! ;D
Miguel Núñez.

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:No puedo borrar Brush
« Respuesta #8 en: Septiembre 28, 2010, 05:17:43 pm »
jajajaj :D
No es el gallo de LeandroA pero esta bien ;)

DoEvents! :P

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:No puedo borrar Brush
« Respuesta #9 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?
Me encuentras en YAcosta.com

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:No puedo borrar Brush
« Respuesta #10 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.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:No puedo borrar Brush
« Respuesta #11 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.
Me encuentras en YAcosta.com

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:No puedo borrar Brush
« Respuesta #12 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 hay ejemplos graficos.

Saludos.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:No puedo borrar Brush
« Respuesta #13 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
« última modificación: Septiembre 30, 2010, 01:12:14 am por YvanB »
Me encuentras en YAcosta.com

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:No puedo borrar Brush
« Respuesta #14 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)