Cómo: Dibujar curvas spline cardinales
Una curva spline cardinal es una curva que pasa suavemente por un determinado conjunto de puntos. Para dibujar una curva spline cardinal, cree un objeto Graphics y pase la dirección de una matriz de puntos al método DrawCurve.
Dibujar una curva spline cardinal en forma de campana
En el siguiente ejemplo se dibuja una curva spline cardinal en forma de campana que pasa por cinco puntos designados. En la siguiente ilustración se muestran la curva y los cinco puntos.
Dim points As Point() = { _
New Point(0, 100), _
New Point(50, 80), _
New Point(100, 20), _
New Point(150, 80), _
New Point(200, 100)}
Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawCurve(pen, points)
Point[] points = {
new Point(0, 100),
new Point(50, 80),
new Point(100, 20),
new Point(150, 80),
new Point(200, 100)};
Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawCurve(pen, points);
Dibujar una curva spline cardinal cerrada
- Utilice el método DrawClosedCurve de la clase Graphics para dibujar una curva spline cardinal cerrada. En una curva spline cardinal cerrada, la curva pasa por el último punto de la matriz y conecta con el primer punto de la matriz. En el siguiente ejemplo se dibuja una curva spline cardinal cerrada que pasa por seis puntos designados. En la ilustración siguiente se muestran la curva spline cardinal cerrada y los seis puntos.
Dim points As Point() = { _
New Point(60, 60), _
New Point(150, 80), _
New Point(200, 40), _
New Point(180, 120), _
New Point(120, 100), _
New Point(80, 160)}
Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawClosedCurve(pen, points)
Point[] points = {
new Point(60, 60),
new Point(150, 80),
new Point(200, 40),
new Point(180, 120),
new Point(120, 100),
new Point(80, 160)};
Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawClosedCurve(pen, points);
Cambiar la inclinación de una curva spline cardinal
- Se puede cambiar la inclinación de una curva spline cardinal pasando un argumento de tensión al método DrawCurve. En el siguiente ejemplo se dibujan tres curvas spline cardinales que pasan por el mismo conjunto de puntos. En la ilustración siguiente se muestran las tres curvas spline con sus valores de tensión. Observe que cuando la tensión es 0, los puntos quedan conectados por líneas rectas.
Dim points As Point() = { _
New Point(20, 50), _
New Point(100, 10), _
New Point(200, 100), _
New Point(300, 50), _
New Point(400, 80)}
Dim pen As New Pen(Color.FromArgb(255, 0, 0, 255))
e.Graphics.DrawCurve(pen, points, 0.0F)
e.Graphics.DrawCurve(pen, points, 0.6F)
e.Graphics.DrawCurve(pen, points, 1.0F)
Point[] points = {
new Point(20, 50),
new Point(100, 10),
new Point(200, 100),
new Point(300, 50),
new Point(400, 80)};
Pen pen = new Pen(Color.FromArgb(255, 0, 0, 255));
e.Graphics.DrawCurve(pen, points, 0.0f);
e.Graphics.DrawCurve(pen, points, 0.6f);
e.Graphics.DrawCurve(pen, points, 1.0f);
Compilar el código
Los ejemplos anteriores están diseñados para formularios Windows Forms y requieren PaintEventArgs e, que es un parámetro del controlador del evento Paint.