Compartir a través de


Cómo: Dibujar líneas opacas y semitransparentes

Cuando dibuja una línea, debe pasar un objeto Pen al método DrawLine de la clase Graphics. Uno de los parámetros del constructor Pen es un objeto Color. Para dibujar una línea opaca, establezca el componente alfa del color en 255. Para dibujar una línea semitransparente, establezca el componente alfa en cualquier valor de 1 a 254.

Cuando se dibuja una línea semitransparente sobre un fondo, el color de la línea se mezcla con los colores del fondo. El componente alfa especifica cómo se mezclan los colores de la línea y del fondo. Los valores alfa cercanos a 0 dan más importancia a los colores de fondo y los cercanos a 255 dan más importancia al color de la línea.

Ejemplo

En el ejemplo siguiente se dibuja un mapa de bits y, después, se dibujan tres líneas que utilizan el mapa de bits como fondo. La primera línea utiliza un componente alfa de 255, por lo que es opaca. La segunda y tercera línea usan un componente alfa de 128, por lo que son semitransparentes; la imagen de fondo se puede ver a través de las líneas. La instrucción que establece la propiedad CompositingQuality hace que la mezcla de la tercera línea se realice conjuntamente con la corrección gamma.

En la siguiente ilustración se muestra el resultado del código siguiente.

Opaco y semitransparente

        Dim bitmap As New Bitmap("Texture1.jpg")
        e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height)

        Dim opaquePen As New Pen(Color.FromArgb(255, 0, 0, 255), 15)
        Dim semiTransPen As New Pen(Color.FromArgb(128, 0, 0, 255), 15)

        e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20)
        e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40)

        e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
        e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60)

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 10, 5, bitmap.Width, bitmap.Height);

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);
Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);

Compilar el código

El ejemplo anterior está diseñado para formularios Windows Forms y requiere PaintEventArgs e, que es un parámetro del controlador del evento Paint.

Vea también

Tareas

Cómo: Proporcionar un fondo transparente a un control

Cómo: Crear formularios Windows Forms transparentes

Cómo: Dibujar con pinceles opacos y semitransparentes

Otros recursos

Líneas y rellenos con mezcla alfa