使用GDI,GDI +和Delphi在3D空间中绘制图像

时间:2013-12-27 17:04:39

标签: delphi 3d gdi+ gdi image-rotation

我需要使用Delphi XE3编写一个小应用程序来在TCanvas上绘制一个图像。 我从DXF文件中读取这个图像,所以我知道文件名,X和Y轴的比例以及3D空间旋转和X,Y和Z轴(有关here的更多详细信息)。

图像是位图,因此我可以使用TBitmap加载它。 我的问题是:我找不到正确的功能,可以在2个方向上缩放,并在“空间”上绘制(旋转)。

如果可能,我需要使用GDI和GDI +。

1 个答案:

答案 0 :(得分:1)

可能你的问题是将3D坐标转换为2D。我认为你可以使用this answer中的以下两个例程:

function RotateAroundXAxis(const P: TPoint3D; Alfa: Double): TPoint3D;
begin
  Result.X := P.X;
  Result.Y := P.Y * Cos(Alfa) + P.Z * Sin(Alfa);
  Result.Z := P.Y * -Sin(Alfa) + P.Z * Cos(Alfa);
end;

function RotateAroundYAxis(const P: TPoint3D; Beta: Double): TPoint3D;
begin
  Result.X := P.X * Cos(Beta) + P.Z * Sin(Beta);
  Result.Y := P.Y;
  Result.Z := P.X * -Sin(Beta) + P.Z * Cos(Beta);
end;

实际上,该答案涉及更多3D内容,并处理GDI和GDI +:它可能提供您需要知道的所有内容。