在图像底部填充/追加矩形c#

时间:2014-05-07 18:27:28

标签: c# image drawing fill

我需要在图像底部填充一个矩形,但不要在图像上填充,因此它应该是一种在图像底部附加一个矩形。

我现在拥有的东西:

    private void DrawRectangle()
    {
        string imageFilePath = @"c:\Test.jpg";
        Bitmap bitmap = (Bitmap)Image.FromFile(imageFilePath);
        using (Graphics graphics = Graphics.FromImage(bitmap))
        {
            using (Image img = Image.FromFile(imageFilePath))
            {
                SolidBrush brush = new SolidBrush(Color.Black);
                int width = img.Width;
                int height = img.Height - 350;
                graphics.FillRectangle(brush, 0, height, width, 350);
            }
        }
        bitmap.Save(@"c:\Test1.jpg");
    }

但这是在图像上。

有什么想法吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

您需要知道原始图像的尺寸,以便设置新位图的大小,该位图必须更大才能容纳矩形。

private void DrawRectangle()
{
    string imageFilePath = @"c:\Test.jpg";
    int rectHeight = 100;

    using (Image img = Image.FromFile(imageFilePath)) // load original image
    using (Bitmap bitmap = new Bitmap(img.Width, img.Height + rectHeight)) // create blank bitmap of desired size
    using (Graphics graphics = Graphics.FromImage(bitmap))
    {
        // draw existing image onto new blank bitmap
        graphics.DrawImage(img, 0, 0, img.Width, img.Height); 
        SolidBrush brush = new SolidBrush(Color.Black);
        // draw your rectangle below the original image
        graphics.FillRectangle(brush, 0, img.Height, img.Width, rectHeight); 
        bitmap.Save(@"c:\Test1.bmp");
    }
}

答案 1 :(得分:0)

看看FillRectangle()方法重载..它有一个具有以下定义:FillRectangle(Brush brush, int PositionX, int PositionY, int Width, int Height)

你的问题很可能源于对你正在做的事情使用不正确的超载。