[英]Draw image in 3D space with GDI, GDI+ and Delphi
我需要使用Delphi XE3编写一个小应用程序以在TCanvas上绘制图像。 我从DXF文件读取了此图像,所以我知道文件名,关于X和Y轴的比例以及3D空间旋转以及X,Y和Z轴(有关更多详细信息,请参见此处 )。
该图像是位图,因此我可以使用TBitmap加载它。 我的问题是:我找不到在2个方向上缩放并在“空间”(旋转)上绘制的正确函数。
如果可能,我需要同时使用GDI和GDI +。
可能您的问题是将3D坐标转换为2D。 我认为您可以从此答案中使用以下两个例程:
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 +:它可以提供您需要了解的所有信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.