You might try using IEGDIPlus.pas.
It has quite a few ways to draw curves.
procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);
procedure Polyline(Points: array of TPoint);
Here is how to use it:
procedure TForm1.Button2Click(Sender: TObject);
var
iIECanvas: TIECanvas;
iBrushWidth: integer;
iBrushColor: TColor;
iBrushAlpha: integer;
iPoints: array of TPoint;
begin
iIECanvas := TIECanvas.Create(ImageEnView1.Layers[ImageEnView1.LayersCurrent]
.Bitmap.Canvas, AntiAlias1.Checked, UseGDIPlus1.Checked);
iBrushWidth := StrToInt(BrushSize1.Text);
iBrushColor := BrushColor1.Selected;
iBrushAlpha := StrToInt(BrushAlpha1.Text);
iIECanvas.Pen.Style := psSolid;
iIECanvas.Brush.Color := iBrushcolor;
iIECanvas.Brush.Style := bsClear;
iIECanvas.Brush.Transparency := iBrushAlpha;
iIECanvas.Brush.BackTransparency := iBrushAlpha;
SetLength(iPoints, 5);
iPoints[0] := Point(0, 0);
iPoints[1] := Point(50, 75);
iPoints[2] := Point(75, 50);
iPoints[3] := Point(25, 70);
iPoints[4] := Point(0, 0);
iIECanvas.Polyline(iPoints);
iIECanvas.Free();
end;
You can also draw on the alpha channel.
William Miller
Adirondack Software & Graphics
Email: w2m@frontiernet.net
EBook: http://www.imageen.com/ebook/
Apprehend: http://www.frontiernet.net/~w2m/index.html