您可以使用 GDI+ 倾斜图像 a、b 和 c,然后将新的“3D”图像绘制到新的位图中。
请阅读以下关于倾斜的链接http://msdn.microsoft.com/en-us/library/3b575a03%28v=vs.110%29.aspx
在倾斜图像并将它们绘制到新位图中时,您必须确保以下几点:
- a 的右上角 = b 的左上角
- a 的左下角 = c 的左下角
- b 的左下角 = c 的左上角
现在这是基于图像是正方形的假设,我不确定您(作为开发人员)将如何处理矩形图像(也许您可以拉伸它,取决于您)。我也使用相同的图像而不是 A B 和 C,但概念应该是相同的。
这是一个用 WinForm 的 OnPaint 方法编写的快速示例
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Bitmap xImage = new Bitmap(@"PATH TO IMAGE");
Size xImageSize = xImage.Size;
int Skew = 30;
using (Bitmap xNewImage = new Bitmap(120, 120)) //Determine your size
{
using (Graphics xGraphics = Graphics.FromImage(xNewImage))
{
Point[] xPointsA =
{
new Point(0, Skew), //Upper Left
new Point(xImageSize.Width, 0), //Upper Right
new Point(0, xImageSize.Height + Skew) //Lower left
};
Point[] xPointsB =
{
new Point(xImageSize.Width, 0), //Upper Left
new Point(xImageSize.Width*2, Skew), //Upper Right
new Point(xImageSize.Width, xImageSize.Height) //Lower left
};
Point[] xPointsC =
{
new Point(xImageSize.Width, xImageSize.Height), //Upper Left
new Point(xImageSize.Width*2, xImageSize.Height + Skew), //Upper Right
new Point(0, xImageSize.Height + Skew) //Lower left
};
//Draw to new Image
xGraphics.DrawImage(xImage, xPointsA);
xGraphics.DrawImage(xImage, xPointsB);
xGraphics.DrawImage(xImage, xPointsC);
}
e.Graphics.DrawImage(xNewImage, new Point()); //Here you would want to assign the new image to the picture box
}
}