我需要在图像底部填充一个矩形,但不要在图像上填充,因此它应该是一种在图像底部附加一个矩形。
我现在拥有的东西:
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");
}
但这是在图像上。
有什么想法吗?
谢谢。
答案 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)
你的问题很可能源于对你正在做的事情使用不正确的超载。