Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad DrawTreeNodeEventArgs.Graphics

 

Publicado: octubre de 2016

Obtiene el Graphics objeto usado para dibujar el TreeNode.

Espacio de nombres:   System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)

public Graphics Graphics { get; }

Valor de propiedad

Type: System.Drawing.Graphics

Un Graphics usado para dibujar el TreeNode.

La Graphics clase proporciona propiedades y métodos útiles para dibujar en el dispositivo de pantalla.

En el ejemplo de código siguiente se muestra cómo personalizar un TreeView control mediante el dibujo del propietario. El TreeView control del ejemplo muestra etiquetas de nodo opcionales junto a las etiquetas de nodo estándar. Las etiquetas de nodo se especifican utilizando el TreeNode.Tag propiedad. El TreeView control también utiliza colores personalizados, incluido un color de resaltado personalizado.

Puede personalizar la mayoría de los TreeView colores estableciendo las propiedades del color, pero el color de resaltado de selección no está disponible como una propiedad. Además, el rectángulo de resaltado de selección predeterminado se extiende sólo alrededor de una etiqueta de nodo. Dibujo del propietario se debe utilizar para dibujar las etiquetas de nodo y dibujar un rectángulo de resalte personalizado suficientemente grande como para incluir una etiqueta de nodo.

En el ejemplo, un controlador para el TreeView.DrawNode dibuja evento las etiquetas de nodo y la selección personalizada resaltan manualmente. Nodos no seleccionados no necesitan personalización. En estos casos, el DrawDefault propiedad está establecida en true para que sean dibujados por el sistema operativo.

Para obtener un ejemplo completo, vea el DrawTreeNodeEventArgs tema de referencia de información general.

// Draws a node.
private void myTreeView_DrawNode(
    object sender, DrawTreeNodeEventArgs e)
{
    // Draw the background and node text for a selected node.
    if ((e.State & TreeNodeStates.Selected) != 0)
    {
        // Draw the background of the selected node. The NodeBounds
        // method makes the highlight rectangle large enough to
        // include the text of a node tag, if one is present.
        e.Graphics.FillRectangle(Brushes.Green, NodeBounds(e.Node));

        // Retrieve the node font. If the node font has not been set,
        // use the TreeView font.
        Font nodeFont = e.Node.NodeFont;
        if (nodeFont == null) nodeFont = ((TreeView)sender).Font;

        // Draw the node text.
        e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White,
            Rectangle.Inflate(e.Bounds, 2, 0));
    }

    // Use the default background and node text.
    else 
    {
        e.DrawDefault = true;
    }

    // If a node tag is present, draw its string representation 
    // to the right of the label text.
    if (e.Node.Tag != null)
    {
        e.Graphics.DrawString(e.Node.Tag.ToString(), tagFont,
            Brushes.Yellow, e.Bounds.Right + 2, e.Bounds.Top);
    }

    // If the node has focus, draw the focus rectangle large, making
    // it large enough to include the text of the node tag, if present.
    if ((e.State & TreeNodeStates.Focused) != 0)
    {
        using (Pen focusPen = new Pen(Color.Black))
        {
            focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
            Rectangle focusBounds = NodeBounds(e.Node);
            focusBounds.Size = new Size(focusBounds.Width - 1, 
            focusBounds.Height - 1);
            e.Graphics.DrawRectangle(focusPen, focusBounds);
        }
    }
}

.NET Framework
Disponible desde 2.0
Volver al principio
Mostrar: