【问题标题】:Drawing 2 bitmaps in one picturebox在一个图片框中绘制 2 个位图
【发布时间】:2015-09-24 03:50:08
【问题描述】:

我有一个对象和一个自定义方法来绘制它,它返回一个位图。

我像这样画一个对象:

pictureBox1.Image = MyObject.DrawMyObject(startingPoint);

如何将其中 2 个放在一个图片框中?我尝试使用一些运算符,但似乎它们不适用于 Bitmap 类型。我读过Image 属性只接受一个位图,但不明白如何绘制位图,然后是第二个而不丢失第一个。

【问题讨论】:

  • “将 2 张图片放在一个图片框上”是指将 2 张图片并排显示吗?创建具有正确尺寸的新图像,获取Graphics 对象并使用DrawImage() 函数两次绘制两张图片,如果这是您想要的。
  • Displaying an array of images in picturebox? 的可能副本。尽管问题是关于数组 o 图像,但解决方案仍然有效。要么将您的图像绘制成一个最终图像以进行显示,要么具有多个框。
  • 我不明白你想要达到什么目的
  • @MaximilianGerhardt 不,我的意思是,如果我要绘制一个对象,我想在同一个 pb 上绘制第二个对象。
  • 也许只使用BackgroundImage 和另一个Image 就足够了吗?

标签: c#


【解决方案1】:

好的,从 cmets 跟进,您想要合并两张图片,希望它们是透明的,否则您将过度绘制所有内容。 让图像1成为

图片2是

请注意,它们确实具有相同的尺寸 (800 x 600),因此我无需担心计算尺寸。 (否则,将每张图片的最大宽度和高度作为新的尺寸)。由于两者都是透明的,我想在骰子上绘制 stackoverflow 徽标,我使用 Graphics 对象和 DrawImage 函数来完成。

using System.Drawing;

namespace stuff
{
    class Program
    {
        static void Main(string[] args)
        {

            Bitmap pImage1 = new Bitmap(@"C:\Users\...\Desktop\PNGtest.png");
            Bitmap pImage2 = new Bitmap(@"C:\Users\...\Desktop\logo.png");

            using(Graphics g = Graphics.FromImage(pImage1))
            {
                g.DrawImage(pImage2, new Point(0, 0));
                g.Save();
            }

            pImage1.Save(@"C:\Users\...\Desktop\merged.png", System.Drawing.Imaging.ImageFormat.Png);
        }
    }
}

结果

您可以使用DrawImage() 中的Point 参数修改第二个图像将在第一个图像上绘制的起点。

【讨论】:

  • 哦,旧的stackoverflow标志在行动=D
猜你喜欢
  • 2014-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多