如何解决创建位图图像以显示使用C#的工作时间
我试图制作一个位图图像来表示一个小时的块,并以10分钟为间隔将红色显示为工作时间,将白色显示为未工作。我正在尝试使结果如下所示:
任何帮助或指导将不胜感激。在Tuple
public void DrawPeriod(IGrouping<int,Tuple<int,DateTime>> worked)
{
var bitmap = new Bitmap(640,480);
for (var x = 0; x < bitmap.Width; x++)
{
for (var y = 0; y < bitmap.Height; y++)
{
bitmap.SetPixel(x,y,Color.Red);
}
}
bitmap.Save("worked.bmp");
}
解决方法
对不起,我无法提供您所需数据的样本。但是您可以这样做。这可以通过使用System.Drawing.Graphics
来实现。
var sampleData = new int[] { 1,2,3,13,4,5,6,12,7,8,9 };
var bitmapHeight = 250;
var barWidth = 50;
var bitmap = new Bitmap(sampleData.Length * barWidth,bitmapHeight);
int currentX = 1;
foreach (var item in sampleData)
{
var result = item % 2;
Brush brush;
if (result == 0)
{
brush = Brushes.Red;
}
else
{
brush = Brushes.White;
}
using (Graphics graphics = Graphics.FromImage(bitmap))
{
var rectangle = new Rectangle(currentX,barWidth,bitmapHeight);
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.FillRectangle(brush,rectangle);
// Set Text
Font drawFont = new Font("Arial",16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
graphics.DrawString(item.ToString(),drawFont,drawBrush,currentX + 15,bitmapHeight / 2);
}
currentX = currentX + 50;
}
// Border
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.DrawRectangle(new Pen(Brushes.Black,5),new Rectangle(0,bitmap.Width,bitmap.Height));
}
bitmap.Save(FileName);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。