事实上,我想从给定的Tpoint坐标到Bitmap画布上的另一个Tpoint绘制一条动画线,因为我试图读取OpenGl的一些开源资源,但是我发现的delphi的小能力似乎很难完成这个C++ source在github上的使用,以及我确切想做的,但是在delphi 2009下,如果将这条线动画化,则对于此个人游戏原型可能会更好。
我尝试了一些功能-LineDDA-,但功能非常有限。 我在找这样的东西:
function Make_Projectile( canvas:tcanvas;Start,Target:Tpoint):boolean;
with canvas do
draw the animated_arc_line form start to trget;
if we toutch target then result= true else false...
end;
我尝试了这段代码:
procedure ArcByStartEndAngle(Canvas:TCanvas;P0, P1: TPoint; Angle: Double; NSeg: Integer);
var
i: Integer;
len, dx, dy, mx, my, px, py, t, cx, cy, p0x, p0y, an: Double;
xx, yy: Integer;
begin
mx := (P0.x + P1.x) / 2;
my := (P0.y + P1.y) / 2;
dx := (P1.x - P0.x) / 2;
dy := (P1.y - P0.y) / 2;
len := Math.Hypot(dx, dy);
px := -dy / len;
py := dx / len;
if Angle = Pi then
t := 0
else
t := len / Math.Tan(Angle / 2);
cx := mx + px * t;
cy := my + py * t;
p0x := P0.x - cx;
p0y := P0.y - cy;
for i := 0 to NSeg + 1 do
begin
an := i * Angle / (NSeg + 1);
xx := Round(cx + p0x * Cos(an) - p0y * Sin(an));
yy := Round(cy + p0x * Sin(an) + p0y * Cos(an));
Canvas.Pen.Color:=clBlue;
Canvas.Brush.Color:=clRed;
Canvas.Ellipse(xx - 3, yy - 3, xx + 4, yy + 4);
end;
end;
对于这些参数,它给出了:this result
ArcByStartEndAngle(Form1.Image1.Canvas, Point(574,199),Point(62,202), Pi / 2, 8);
请留下一段代码,可以帮助上面的c代码翻译或在上面列出以获得所需的效果。 以下屏幕快照可能会提示您:ScreenShoot enter image description here **