GDI y DobleBuffer

03/10/2006 - 10:41 por news.microsofto.com | Informe spam
Estoy haciendo un aplicación con gráficos muy sencillos con GDI.

El problema es que al mover algunos objetos repinta toda la venta con lo que
se ve un efecto desagradable ( flickering(?) me parece que se llama).

¿Sabéis alguna manera de simular la técnica del doble buffer sobre GDI para
evitar este efecto?

Otra posibilidad es pintar sólo el rectángulo sobre el que ha habido
movimiento (InvalidateRect, etc..) pero creo que la solución del doble
buffer es mejor.

No quiero utilizar DirectX, quiero seguir con GDI.

Gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mezcua
03/10/2006 - 10:41 | Informe spam
Hola.

Aquí tienes un ejemplo

http://www.bobpowell.net/doublebuffer.htm

Un saludo,

Alejandro Mezcua
MVP .NET Compact Framework
http://www.byteabyte.net/

Estoy haciendo un aplicación con gráficos muy sencillos con GDI.

El problema es que al mover algunos objetos repinta toda la venta con
lo que se ve un efecto desagradable ( flickering(?) me parece que se
llama).

¿Sabéis alguna manera de simular la técnica del doble buffer sobre GDI
para evitar este efecto?

Otra posibilidad es pintar sólo el rectángulo sobre el que ha habido
movimiento (InvalidateRect, etc..) pero creo que la solución del doble
buffer es mejor.

No quiero utilizar DirectX, quiero seguir con GDI.

Gracias.

Respuesta Responder a este mensaje
#2 RFOG
03/10/2006 - 11:06 | Informe spam
Hash: SHA1

news.microsofto.com wrote:
Estoy haciendo un aplicación con gráficos muy sencillos con GDI.

El problema es que al mover algunos objetos repinta toda la venta con lo que
se ve un efecto desagradable ( flickering(?) me parece que se llama).

¿Sabéis alguna manera de simular la técnica del doble buffer sobre GDI para
evitar este efecto?

Otra posibilidad es pintar sólo el rectángulo sobre el que ha habido
movimiento (InvalidateRect, etc..) pero creo que la solución del doble
buffer es mejor.

No quiero utilizar DirectX, quiero seguir con GDI.

Gracias.




El flickering lo tienes porque el sistema está pintando el background, y
el doble buffer lo hace directamente la ficha si así se lo indicas:

Pon esto en el constructor, después de la llamada a inicializar los
componentes:

SetStyle(ControlStyles.DoubleBuffer|ControlStyles.AllPaintingInWmPaint,true);



ÿþV
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida