30 Jul, 2009 12:26

Label transparente em Windows Mobile

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.

Ao navegar neste site, você consente o uso de cookies nossos e de terceiros, que coletam informações anônimas e são essenciais para melhorar sua experiência em nosso site.