我需要使用Delphi XE3编写一个小应用程序来在TCanvas上绘制一个图像。 我从DXF文件中读取这个图像,所以我知道文件名,X和Y轴的比例以及3D空间旋转和X,Y和Z轴(有关here的更多详细信息)。
图像是位图,因此我可以使用TBitmap加载它。 我的问题是:我找不到正确的功能,可以在2个方向上缩放,并在“空间”上绘制(旋转)。
如果可能,我需要使用GDI和GDI +。
答案 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 +:它可能提供您需要知道的所有内容。