¿Cómo evitar el parpadeo de la interfaz de usuario en la aplicación Windows CE?

Estoy desarrollando una aplicación en Windows CE 5.0 usando c # .net con Visual Studio 2008. Quiero mostrar algunos controles de usuario en el control de usuario principal mediante la creación de un objeto de control de usuario. Mientras se cargan los controles de usuario en el control de usuario principal, la aplicación parpadea.

Por ejemplo, tengo 1 control de usuario que tiene imagen de 1 botón, quiero mostrar 20 botones de este control de usuario.

`anulación protegida void OnPaint (PaintEventArgs e) {//base.OnPaint(e); Gráficos gxOff = e.Graphics; Gráficos g;

        //Paint the string
        Font boldFont = new Font("Tahoma", 8.0F, FontStyle.Bold);
        Color penColor = Color.FromArgb(48, 48, 48);

        StringFormat drawFormat = new StringFormat();
        drawFormat.Alignment = StringAlignment.Center;
        if (m_bmpOffscreen == null) //Bitmap for doublebuffering
        {
            m_bmpOffscreen = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
        }

        g = Graphics.FromImage(m_bmpOffscreen);

        g.Clear(this.BackColor);

        if (!Disabled)
        {
            backgroundImage = unselected_img;
            if (selected)
            {
                backgroundImage = selected_img;
                g.DrawImage(backgroundImage, this.ClientRectangle, new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height), GraphicsUnit.Pixel);
            }
            else
                g.DrawImage(backgroundImage, this.ClientRectangle, new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height), GraphicsUnit.Pixel);
        }
        else
        {
            backgroundImage = disabled_img;
            g.DrawImage(backgroundImage, this.ClientRectangle, new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height), GraphicsUnit.Pixel);
        }

        g.DrawString(this.Content, boldFont, new SolidBrush(penColor), new RectangleF(0, 3, 20, 20), drawFormat);

        gxOff.DrawImage(m_bmpOffscreen, 0, 0);
    }`

Por favor ayude a resolver este problema.

Gracias de antemano.

preguntado el 02 de febrero de 12 a las 10:02

¿usa acoplamiento, paneles, cualquier panel de diseño para los controles en el control del usuario y para los controles del usuario? -

Estoy dibujando la imagen del botón en el evento onpaint en el control de usuario que estoy tratando de cargar en otro control de usuario -

Así que muestra tu código de dibujo. También creo que agregar 20 controles de usuario que dibujan algo no es una buena idea. -

Quiero mostrar el mismo control de usuario con contenido diferente. He agregado 20 controles de usuario de este tipo con contenido diferente, mientras que la carga por primera vez parpadea. También probé el almacenamiento en búfer doble. -

¿Puedes publicar tu código de dibujo? -

1 Respuestas

Su código de búfer trasero se ve bien, aunque le recomiendo mantener su objeto Graphics alrededor. Puede eliminarlo y actualizarlo y el mapa de bits del búfer posterior en OnResize; asegúrese de verificar el tamaño válido. Sospecho que puede estar viendo un parpadeo del comportamiento predeterminado de OnPaintBackground, intente anularlo y no operarlo.

Respondido 27 Feb 12, 20:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.