Cómo: Utilizar la comprobación de visitas en una región

La comprobación de visitas tiene por objeto determinar si el cursor está situado encima de un determinado objeto, como un icono o un botón.

Ejemplo

En el siguiente ejemplo se crea una región con forma de signo más mediante la unión de dos regiones rectangulares. Supongamos que la variable point almacena la ubicación del clic más reciente. El código comprueba si point se encuentra en la región con forma de signo más. Si dicha variable se encuentra en la región (una visita), la región se rellena con un pincel rojo opaco. De lo contrario, la región se rellena con un pincel rojo semitransparente.

        Dim point As New Point(60, 10)

        ' Assume that the variable "point" contains the location of the
        ' most recent mouse click.
        ' To simulate a hit, assign (60, 10) to point.
        ' To simulate a miss, assign (0, 0) to point.

        Dim solidBrush As New SolidBrush(Color.Black)
        Dim region1 As New [Region](New Rectangle(50, 0, 50, 150))
        Dim region2 As New [Region](New Rectangle(0, 50, 150, 50))

        ' Create a plus-shaped region by forming the union of region1 and region2.
        ' The union replaces region1.
        region1.Union(region2)

        If region1.IsVisible(point, e.Graphics) Then
            ' The point is in the region. Use an opaque brush.
            solidBrush.Color = Color.FromArgb(255, 255, 0, 0)
        Else
            ' The point is not in the region. Use a semitransparent brush.
            solidBrush.Color = Color.FromArgb(64, 255, 0, 0)
        End If

        e.Graphics.FillRegion(solidBrush, region1)

Point point = new Point(60, 10);

// Assume that the variable "point" contains the location of the
// most recent mouse click.
// To simulate a hit, assign (60, 10) to point.
// To simulate a miss, assign (0, 0) to point.

SolidBrush solidBrush = new SolidBrush(Color.Black);
Region region1 = new Region(new Rectangle(50, 0, 50, 150));
Region region2 = new Region(new Rectangle(0, 50, 150, 50));

// Create a plus-shaped region by forming the union of region1 and 
// region2.
// The union replaces region1.
region1.Union(region2);

if (region1.IsVisible(point, e.Graphics))
{
    // The point is in the region. Use an opaque brush.
    solidBrush.Color = Color.FromArgb(255, 255, 0, 0);
}
else
{
    // The point is not in the region. Use a semitransparent brush.
    solidBrush.Color = Color.FromArgb(64, 255, 0, 0);
}

e.Graphics.FillRegion(solidBrush, region1);

Compilar el código

El ejemplo anterior está diseñado para formularios Windows Forms y requiere PaintEventArgs e, que es un parámetro de PaintEventHandler.

Vea también

Tareas

Cómo: Utilizar el recorte en una región

Referencia

Region

Conceptos

Regiones de GDI+