繁体   English   中英

组合图像以显示在图片框中

[英]Combining Images to display in the picturebox

在C#Windows Form中,我希望能够操纵Image来将其显示为3张Image放在一起。 该操作包括对于三个轴中的每个轴,我在每个轴上都有一个2D图像。 结果看起来像3D图像。

例如,如果我有3个位图图像; a,b和c。 然后我想制作一个3D图像,其中x轴将具有图像a,y轴将具有图像b,z轴将具有图像c。

像这样: http : //chanceandchoice.files.wordpress.com/2008/11/planes.jpg

请帮忙!

您可以使用GDI +倾斜图像a,b和c,然后将新的“ 3D”图像绘制到新的位图中。

请阅读以下有关倾斜的链接http://msdn.microsoft.com/zh-cn/library/3b575a03%28v=vs.110%29.aspx

倾斜图像并将其绘制到新的位图中时,必须确保以下几点:

  • a的右上角= b的左上角
  • a的左下角= c的左下角
  • b的左下= c的左上

现在,这是基于图像是正方形的假设,我不确定您(作为开发人员)如何处理矩形图像(也许您可以拉伸它,直到您自己决定)。 我也使用相同的图像而不是AB和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
        }
    }

您必须对图像进行“透视变形”。 查看类似问题的答案: 4点变换图像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM