Sign in Join
Wiki copytemporary

BGRABitmap tutorial 7/es: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Esta tutoría muestra como usar splines.
22
33### Crear un nuevo proyecto
44
55Crea un nuevo proyecto y añade referencia a [[BGRABitmap]], de la misma forma que en [[BGRABitmap tutorial/es|la primer tutoría]].
66
77### Dibuja una spline abierta
88
99Con el inspector de objetos, añade un manejador OnPaint y escribe :
1010
1111``` pascal
1212procedure TForm1.FormPaint(Sender: TObject);
1313var
1414 image: TBGRABitmap;
1515 pts: array of TPointF;
1616 storedSpline: array of TPointF;
1717 c: TBGRAPixel;
1818
1919begin
2020 image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace)));
2121 c := ColorToBGRA(ColorToRGB(clWindowText));
2222
2323 //rectangular polyline
2424 setlength(pts,4);
2525 pts[0] := PointF(50,50);
2626 pts[1] := PointF(150,50);
2727 pts[2] := PointF(150,150);
2828 pts[3] := PointF(50,150);
2929 image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);
3030
3131 //compute spline points and draw as a polyline
3232 storedSpline := image.ComputeOpenedSpline(pts);
3333 image.DrawPolylineAntialias(storedSpline,c,1);
3434
3535 image.Draw(Canvas,0,0,True);
3636 image.free;
3737end;
3838```
3939
4040Hay dos líneas que dibuja spline. La primer línea computa los puntos spline, y la segunda los dibuja. Ten en cuenta que es una función específica para splines abiertas.
4141
4242### Dibuja una spline cerrada
4343
4444Antes de image.Draw, agrega estas líneas :
4545
4646``` pascal
4747 for i := 0 to 3 do
4848 pts[i].x += 200;
4949 image.DrawPolylineAntialias(pts,BGRA(255,0,0,150),1);
5050
5151 storedSpline := image.ComputeClosedSpline(pts);
5252 image.DrawPolygonAntialias(storedSpline,c,1);
5353```
5454
5555Ve con el cursor en el identificador 'i' y presiona Ctrl-Shift-C para agregar la declaración de la variable. El loop desplaza los puntos hacia la derecha.
5656
5757Dos nuevas lineas dibujan una spline cerrada. Ten en cuenta la función específica que computa splines cerradas y la llamada a DrawPolygonAntialias.
5858
5959Puedes evitar usar una variable para guardar los puntos de la spline como esta :
6060
6161``` pascal
6262image.DrawPolygonAntialias(image.ComputeClosedSpline(pts),c,1);
6363```
6464
6565De todas formas, si haces eso, no puedes usar los puntos computados mas de una vez, estos deben ser calculados cada vez que los usas.
6666
6767### Ejecuta el programa
6868
6969Esto debería dibujar dos splines, uno abierto a la izquierda y uno cerrado a la derecha.
7070
71-<figure>
72-<img src="BGRATutorial7.png" title="BGRATutorial7.png" />
73-<figcaption>BGRATutorial7.png</figcaption>
74-</figure>
71+![](/wiki-images/8/84/BGRATutorial7.png)
7572
7673Ten en cuenta que la spline va a través de cada punto. Si quieres que la curva permanezca dentro o definir tangentes, necesitas usar puntos de control, que están displonibles en curvas Bézier.
7774
7875### Usando curvas Bézier
7976
8077Antes de image.Draw, agrega estas líneas :
8178
8279``` pascal
8380 storedSpline := image.ComputeBezierSpline([BezierCurve(PointF(50,50),PointF(150,50),PointF(150,100)),
8481 BezierCurve(PointF(150,100),PointF(150,150),PointF(50,150))]);
8582 image.DrawPolylineAntialias(storedSpline,c,2);
8683```
8784
8885La función BezierCurve define una curva con un orígen y un destino, y uno o dos puntos de control. Aquí solo hay un punto de control. Aquí los puntos de control están definidos, entonces la curva es tangente al rectángulo definido antes.
8986
9087Una spline Bézier es simplemente una serie de curvas Bézier. Por lo tanto, la función ComputeBezierSpline concatena un array de curvas Bézier. Aquí construimos una bonita U-girada con dos curvas.
9188
9289### Ejecuta el programa
9390
9491Deberías ver una curva Bézier en negrita dentro del rectángulo izquierdo.
9592
96-<figure>
97-<img src="BGRATutorial7b.png" title="BGRATutorial7b.png" />
98-<figcaption>BGRATutorial7b.png</figcaption>
99-</figure>
93+![](/wiki-images/a/aa/BGRATutorial7b.png)
10094
10195[[BGRABitmap tutorial 6/es|Tutoría anterior (estilos de línea)]] \| [[BGRABitmap tutorial 8/es|Siguiente tutoría (texturas)]]
10296
10397---
10498*From the Free Pascal wiki, page "BGRABitmap tutorial 7/es", as it stood on 2020-02-10 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
10599Category: Castellano
106100Category: Español

Back to history