Sí, eso no funciona. Aquí está una clase que lo mejora un poco:
using System;
using System.Windows.Forms;
class MyFlowLayoutPanel : FlowLayoutPanel {
public MyFlowLayoutPanel() {
this.DoubleBuffered = true;
}
protected override void OnScroll(ScrollEventArgs se) {
this.Invalidate();
base.OnScroll(se);
}
}
Compilar y dejarlo caer desde la parte superior de la caja de herramientas hasta el formulario. Sin embargo, no puede solucionar el problema fundamental, la opción "Mostrar contenido de la ventana mientras se arrastra". Esa es una opción del sistema, se encenderá para las versiones posteriores de Windows. Cuando está activado, Windows mismo desplaza el contenido del panel y luego le pide a la aplicación que dibuje la parte que fue revelada por el desplazamiento. El método OnScroll lo reemplaza, asegurando que toda la ventana se vuelva a pintar para mantener la imagen de fondo en su lugar. El resultado final no es bonito, verá la imagen haciendo el "pogo", saltando hacia arriba y hacia abajo mientras se desplaza.
La única solución para esto es desactivar la opción del sistema. No es una solución práctica, a los usuarios les gusta la opción y afecta a todos los programas, no solo a los suyos. Si no puedes vivir con el pogo, entonces tendrás que renunciar a la transparencia.
Hice esto y funcionó bien, pero también lo hice volver a pintar en el cambio de tamaño, porque por alguna razón no es muy inteligente hacerlo por sí mismo. –
Genial, funciona para mí. ¿Podrías dar más detalles sobre lo que este 'CreateParams' está haciendo en realidad, y cómo diablos lo has encontrado? ¿Lo descubriste tú mismo? –
¡Eres mi héroe! –