C# 如何在图像周围创建边框/边框?
我的代码:C# 如何在图像周围创建边框/边框?,c#,C#,我的代码: private void CreateAnimatedGif(List<string> GifsFilesRadar , List<string> GifsFilesSatellite)//string FileName1 , string FileName2) { Bitmap bitmap = null; DirectoryInfo inf = new DirectoryInfo(tempGifFiles); FileInfo[]
private void CreateAnimatedGif(List<string> GifsFilesRadar , List<string> GifsFilesSatellite)//string FileName1 , string FileName2)
{
Bitmap bitmap = null;
DirectoryInfo inf = new DirectoryInfo(tempGifFiles);
FileInfo[] fi = inf.GetFiles("*.gif");
for (int i = 0; i < fi.Length; i++)
{
Bitmap file1 = new Bitmap(GifsFilesRadar[i]);
Bitmap file2 = new Bitmap(GifsFilesSatellite[i]);
//calculate the new width proportionally to the new height it will have
int newWidth = file1.Width + file1.Width / (file2.Height / (file2.Height - file1.Height));
bitmap = new Bitmap(newWidth + file2.Width, Math.Max(file1.Height, file2.Height));
using (Graphics g = Graphics.FromImage(bitmap))
{
//high quality rendering and interpolation mode
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//resize the left image
g.DrawImage(file1, new Rectangle(0, 0, newWidth, file2.Height));
g.DrawImage(file2, newWidth, 0);
string t = @"d:\GifsForAnimations" + "\\" + i.ToString("D6") + ".Gif";
bitmap.Save(t, System.Drawing.Imaging.ImageFormat.Gif);
if (i == 4)
{
break;
}
}
}
List<string> gif = new List<string>();
DirectoryInfo info = new DirectoryInfo(@"d:\GifsForAnimations");
FileInfo[] finfo = info.GetFiles();
for (int i = 0; i < finfo.Length; i++)
{
gif.Add(finfo[i].FullName);
}
newFile.MakeGIF(gif, @"d:\newGifAnim.gif", 80, true);
}
最后我有了新的动画gif文件。
现在我有了边界,以下是位置:
左下角:232.0408.0
左上角:232.0211.0
右上角:524.0211.0
右下角:524.0408.0
我想在每个图像上添加一个边框来标记周围的边框。假设边框为红色,边框线大小为5像素
如何在现有位图或gif文件周围创建矩形?
它不必连接到我这里的示例代码,但如何使用我的位置在图像周围创建框架/边框?您可以在g.DrawImagefile2,newWidth,0之后添加此行 这里有一个小的测试方法,您可以看到它正在工作
private void button1_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(@"C:\avatar63.jpg");
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawRectangle(new Pen(Brushes.Red, 5), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
}
bitmap.Save(@"C:\avatar63New.jpg");
}
之前:之后:
您可以在任意位置添加矩形网格,但jst需要提供X、Y、宽度和高度
使用您的4点结构,这应该是可行的
Point topLeft = new Point(232,211 );
Point topRightr = new Point(232, 408);
Point bottomLeft = new Point(524, 211);
Point bottomRight = new Point(524, 408);
g.DrawRectangle(new Pen(Brushes.LimeGreen, 5), new Rectangle(topLeft, new Size(topRightr.X - topLeft.X, bottomLeft.Y - topLeft.Y)));
// TopLeft = rectangle location
// TopRight.X - TopLeft.X = Width of rectangle
// BottomLeft.Y - TopLeft.Y = height of rectangle
您可以在g.DrawImagefile2,newWidth,0之后添加此行 这里有一个小的测试方法,您可以看到它正在工作
private void button1_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(@"C:\avatar63.jpg");
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawRectangle(new Pen(Brushes.Red, 5), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
}
bitmap.Save(@"C:\avatar63New.jpg");
}
之前:之后:
您可以在任意位置添加矩形网格,但jst需要提供X、Y、宽度和高度
使用您的4点结构,这应该是可行的
Point topLeft = new Point(232,211 );
Point topRightr = new Point(232, 408);
Point bottomLeft = new Point(524, 211);
Point bottomRight = new Point(524, 408);
g.DrawRectangle(new Pen(Brushes.LimeGreen, 5), new Rectangle(topLeft, new Size(topRightr.X - topLeft.X, bottomLeft.Y - topLeft.Y)));
// TopLeft = rectangle location
// TopRight.X - TopLeft.X = Width of rectangle
// BottomLeft.Y - TopLeft.Y = height of rectangle
sa_ddam213正在工作。如果我想用我的问题中的数字点位置来创建这个矩形?232408和232211和524211和524408你能告诉我你在回答中做了什么吗?不知道你的意思,所以你只想在图像上画矩形,而不是在图像周围?如果你发布一张快速绘制的图片,我可以提供更多帮助:sa_ddam213我的意思是,我有一张大图片,在这张图片中,我在上面提到的位置上有一张小图片,我想在大图片中的小图片周围做一个矩形。这就是为什么我问如何使用我上面给出的位置/号码。现在它只会在图像内部创建一个较小的矩形,但稍后在我添加第二个较小的图像后,矩形将围绕它。g.DrawRectanglenew PenBrush.LimeGreen,5,new Rectangle50,50,100,100;这行有四个数字:50,50100100和我的数字我有:232408和232211以及524211和524408每两个数字都是一个点。所以我有四个点,那么我如何用这些点构建矩形呢?数字是指每个点的坐标。232408是我要绘制的矩形的坐标/点。等等。sa_ddam213正在工作。如果我想用我的问题中的数字点位置来创建这个矩形?232408和232211和524211和524408你能告诉我你在回答中做了什么吗?不知道你的意思,所以你只想在图像上画矩形,而不是在图像周围?如果你发布一张快速绘制的图片,我可以提供更多帮助:sa_ddam213我的意思是,我有一张大图片,在这张图片中,我在上面提到的位置上有一张小图片,我想在大图片中的小图片周围做一个矩形。这就是为什么我问如何使用我上面给出的位置/号码。现在它只会在图像内部创建一个较小的矩形,但稍后在我添加第二个较小的图像后,矩形将围绕它。g.DrawRectanglenew PenBrush.LimeGreen,5,new Rectangle50,50,100,100;这行有四个数字:50,50100100和我的数字我有:232408和232211以及524211和524408每两个数字都是一个点。所以我有四个点,那么我如何用这些点构建矩形呢?数字是指每个点的坐标。232408是我要绘制的矩形的坐标/点。等等