Dưới đây là ví dụ nhanh sử dụng 200x200 PaintBox
- ít nhất nó sẽ cung cấp cho bạn ý tưởng về thuật toán. Tôi tin rằng bạn có thể vẽ chấm đen ở giữa. Đọc trên Bezier Curves; PolyBezier
định nghĩa cubic Bezier curves. (link)

Bốn điểm xác định một đường cong Bezier khối - bắt đầu, kết thúc, và hai điểm kiểm soát. Các điểm điều khiển xác định độ cong của đường cong khi đường di chuyển từ đầu đến cuối.
var origin, innerL, midL, midR, lft, tp, rgt, innerR : TPoint;
radius, hgt : integer;
begin
radius := 25;
hgt := 90;
origin.X := 100;
origin.Y := 180;
//control points
innerL.X := origin.X;
innerL.Y := origin.Y - (hgt - radius) div 3;
midL.X := origin.X - radius;
midL.Y := origin.Y - 2*((hgt - radius) div 3);
//top circle
lft.X := origin.X - radius;
lft.Y := origin.Y - (hgt - radius);
tp.X := origin.X;
tp.Y := origin.Y - hgt;
rgt.X := origin.X + radius;
rgt.Y := lft.Y;
//control points
midR.X := origin.X + radius;
midR.Y := midL.Y;
innerR.X := origin.X;
innerR.Y := innerL.Y;
PaintBox1.Canvas.Pen.Width := 2;
PaintBox1.Canvas.PolyBezier([origin, innerL, midL, lft]);
PaintBox1.Canvas.Arc(lft.X, tp.Y, rgt.X, rgt.Y + radius, rgt.X, rgt.Y, lft.X, lft.Y);
PaintBox1.Canvas.PolyBezier([rgt, midR, innerR, origin]);
//fill
PaintBox1.Canvas.Brush.Color := clYellow;
PaintBox1.Canvas.FloodFill(origin.X, origin.Y - radius,
Canvas.Pen.Color, TFillStyle.fsBorder);
end;
Để đáp ứng các điểm mà bạn có thể làm điều này với một Bút chì:
// add four more control TPoints
cornerL.X := lft.X;
cornerL.Y := tp.Y + radius div 2;
cL2.X := lft.X + radius div 2;
cL2.Y := tp.Y;
cR2.X := rgt.X - radius div 2;
cR2.Y := tp.Y;
cornerR.X := rgt.X;
cornerR.Y := cornerL.Y;
PaintBox1.Canvas.PolyBezier([origin, innerL, midL, lft,
cornerL, cL2, tp, cR2, cornerR, rgt,
midR, innerR, origin]);
Tôi không muốn trở thành thô lỗ, nhưng tôi không nghĩ rằng đây có bất cứ điều gì để làm với Delphi hoặc GDI đặc biệt. Nó giống như tìm kiếm một thuật toán có ba tham số và kết quả đầu ra giống như ở trên. –
@ GünthertheBeautiful nó có thể nhưng tôi cần phải làm điều đó với Delphi bằng cách sử dụng GDI và GDI + – Martin
Vấn đề là khi bạn có mô tả toán học, bạn có thể vẽ nó bằng bất kỳ ngôn ngữ nào bạn ưa thích. Nó không phải là một câu hỏi delphi. FWIW Tôi đặt cược Google sử dụng hình ảnh raster. –