BLOG

Acompanhe a Mobits pelo RSS

FILTROS

Uma das dificuldades encontradas por quase todos que se aventuram a programar em Windows Mobile é: Como fazer Label com fundo transparente? E porque a propriedade transparent parece não funcionar?

Começando pela segunda pergunta, a resposta é que a propriedade transparent faz com que Label herde a cor de seu pai, o que funciona somente quando temos Label colocada sobre um fundo de uma única cor. Ou seja, essa propriedade de nada adianta se temos uma imagem de fundo. Então como solução (e também respondendo a primeira pergunta), siga os passos abaixo.

Primeiro, crie em seu projeto uma Component Class (neste exemplo criamos uma nova pasta chamada de Util -> Add -> New Item -> Component Class).

using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Drawing;

namespace TransparenteLabelExample.Util {
    public partial class TransparentLabel : Control {
        public TransparentLabel() {
            this.TextChanged += new System.EventHandler(this.alterouTexto);
        }

        public void alterouTexto(object sender, EventArgs e) {
            this.Invalidate();
        }

        protected override void OnPaintBackground(PaintEventArgs e) {
        }

        private bool bPaintOnce = false;

        protected override void OnPaint(PaintEventArgs e) {
            if (!bPaintOnce) {
                bPaintOnce = true;
                this.Visible = false;
                this.Parent.Invalidate(this.Bounds);
                this.Parent.Update();
                this.Visible = true;
                return;
            }
            else {
                bPaintOnce = false;
                Graphics g = e.Graphics;
                Font font = this.Font;
                SolidBrush brush = new SolidBrush(this.ForeColor);
                g.DrawString(this.Text, font, brush, 1, 1);
                g.Dispose();
            }
        }
    }
}

Depois, execute seu programa uma vez, a Toolbox do Visual Studio conterá um novo Componente que é a TransparentLabel!

Aqui uma imagem para ilustrar:

Transparent Label

Também é possível utilizar esta mesma técnica para criar imagens com fundo transparente com esta Classe.

COMPARTILHE

DEIXE UM COMENTÁRIO

If you can read this, you don't use a typical webbrowser that plays nice with CSS.
Please do not fill in anything here!