2009-08-09 13 views
40

No sé cuál de esos tres métodos me conviene más. Todos trabajan para mí. ¿Alguien sabe la diferencia entre actualizar, actualizar y repintar?¿Cuál es la diferencia entre actualizar, actualizar y repintar?

+12

Para usted y las dos personas que votaron arriba-esto hasta ahora:. Yo sé que la apertura de la ayuda de Delphi desde el IDE es un poco lento, pero aún así debería ser más rápido que pedir SO y esperar respuestas. Respuestas que difícilmente pueden hacer otra cosa que citar de la ayuda. – mghie

+6

Buscar en la documentación en línea, con Google también es otra opción. //docs.codegear.com/ – stukelly

+4

La ayuda de Embarcadero es notoria por su "alta calidad repleta de información". Entiendo que es mejor que pregunte aquí en SO. – truthseeker

Respuesta

38

De acuerdo con la documentación en línea.

Refresh - Repinta el control en la pantalla.

Método de actualización de llamadas para volver a pintar el control inmediatamente. Actualizar llama al método Repaint. Utilice los métodos Refresh y Repintar de manera intercambiable.

Repaint - Obliga al control a volver a pintar su imagen en la pantalla.

Llame a Repintado para forzar el control a vuelva a pintar su imagen inmediatamente. Si la propiedad ControlStyle incluye csOpaque, el control se pinta a sí mismo directamente. De lo contrario, el método Repaint llama al método Invalidate y , luego el método Update para que cualquier parte visible de los controles se vuelva a pintar.

Update - Procesa inmediatamente cualquier mensaje de pintura pendiente.

llamada de actualización para obligar a que el control se repintado antes de nada más, posiblemente tiempo, el procesamiento tiene lugar . Utilice la Actualización para proporcionar comentarios inmediatos al usuario que no puede esperar para recibir el mensaje de pintura de Windows al llegar.

actualización no invalida el control , sino que simplemente obliga a un repintado de cualquier región que ya han sido invalidados . Llame a Repaint en lugar de invalidar el control también.

31

Su pregunta ya ha sido respondida, pero si necesita un buen rendimiento y menos parpadeo, debe llamar a Invalidar en su lugar. Permite a Windows optimizar el proceso de pintura.

Invalidate - Completamente control de repintado.

Use Invalidar cuando se debe volver a pintar todo el control . Cuando hay más de una región dentro del control que necesita repintado, Invalidar hará que la ventana entera se vuelva a pintar en una sola pasada , evitando el parpadeo causado por mediante repintados redundantes. No hay una penalización de rendimiento de por llamar al Invalidar varias veces antes de que el control se vuelva a pintar.

3

por un (CBuilder 6) Referencia VCL mayores:

Invalidate "Invalidar informa un control que toda su superficie tiene que ser repintado llamada a invalidate puede evitar las fluctuaciones producidas por una serie de repintados parciales.. No existe una penalización en el rendimiento por invocar Invalidar varias veces antes de que el control se vuelva a pintar realmente ".

El repintado real no se produce hasta que se actualiza el control. Para forzar un repintado inmediato, llame a Repintura en su lugar.

Repaint "TWinControl :: Repaint llama al método Invalidar y luego al método de actualización para volver a pintar el control" (paráfrasis leve).

(Lamentablemente, la referencia más antigua es mejor y más completa que la referencia más reciente que tengo (CBuilder 2007)

Cuestiones relacionadas