c#如何在bitmap上画图写字
Bitmapbmp=newBitmap(100,100);privatevoidForm2_Paint(objectsender,PaintEventArgse){Gra...
Bitmap bmp = new Bitmap(100, 100);
private void Form2_Paint(object sender, PaintEventArgs e)
{
Graphics g = Graphics.FromImage(bmp);
Region region1 = new Region(new Rectangle(50, 50, Info.Width, Info.High));
SolidBrush brush = new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.backColor));
g.FillRegion(brush, region1);
Font font = new Font("黑体", 25, FontStyle.Regular);
if (Info.Ziti == "黑体")
{
font = new Font("黑体", 25, FontStyle.Regular);
}
else if (Info.Ziti == "楷体")
{
font = new Font("楷体GB-2312", 25, FontStyle.Regular);
}
else if (Info.Ziti == "宋体")
{
font = new Font("宋体", 25, FontStyle.Regular);
}
else if (Info.Ziti == "仿宋")
{
font = new Font("仿宋", 25, FontStyle.Regular); ;
}
//System.Drawing.ColorTranslator.FromHtml(Info.Color) 将字符串转换为颜色
g.DrawString(Info.Num, font, new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.foreColor)), 100, 100);
}
这是我的程序
如果不用bitmap,倒是可以画方块写字,但是我不太清楚怎么保存图片,现在用了bitmap,根本就显示不了,保存的话值能保存上面那个方块,字也保存不了,求大神帮忙!!!!!!! 展开
private void Form2_Paint(object sender, PaintEventArgs e)
{
Graphics g = Graphics.FromImage(bmp);
Region region1 = new Region(new Rectangle(50, 50, Info.Width, Info.High));
SolidBrush brush = new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.backColor));
g.FillRegion(brush, region1);
Font font = new Font("黑体", 25, FontStyle.Regular);
if (Info.Ziti == "黑体")
{
font = new Font("黑体", 25, FontStyle.Regular);
}
else if (Info.Ziti == "楷体")
{
font = new Font("楷体GB-2312", 25, FontStyle.Regular);
}
else if (Info.Ziti == "宋体")
{
font = new Font("宋体", 25, FontStyle.Regular);
}
else if (Info.Ziti == "仿宋")
{
font = new Font("仿宋", 25, FontStyle.Regular); ;
}
//System.Drawing.ColorTranslator.FromHtml(Info.Color) 将字符串转换为颜色
g.DrawString(Info.Num, font, new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.foreColor)), 100, 100);
}
这是我的程序
如果不用bitmap,倒是可以画方块写字,但是我不太清楚怎么保存图片,现在用了bitmap,根本就显示不了,保存的话值能保存上面那个方块,字也保存不了,求大神帮忙!!!!!!! 展开
2个回答
展开全部
Bitmap是内存中的一个图像,你这堆代码已经在这个内存图像上面"画画"了,但并没有把这个图像"贴"到窗体上,具体这么贴,在最下面加这行代码:
e.Graphics.DrawImage(bmp, new Point(0, 0));
字保存不了是因为你的bitmap大小总共100*100,字的左上角坐标也写了(100,100),直接跑到bitmap外面去了。把上面那个DrawString函数最后两个参数改成10,10就看见了。
更多追问追答
追问
太棒啦!!完美解决我的问题。
还想问一个问题就是我想让字占满所画 的方框,该怎么设置字体的大小呢
追答
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
DrawString用StringFormat的重载函数,先让文本在区域里居中,然后慢慢调整Font对象的Size属性,让文本填满整个区域。
展开全部
g.DrawString( Info.Num, font, new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.foreColor)), 10, 10);
this.BackgroundImage = bmp;
这个图片尺寸100*100,可是绘制字符串的坐标也是100,100,这样出界了,另外也记得把图片再绘制到窗口才能看见。
this.BackgroundImage = bmp;
这个图片尺寸100*100,可是绘制字符串的坐标也是100,100,这样出界了,另外也记得把图片再绘制到窗口才能看见。
更多追问追答
追问
那怎样才能让写出的字占满整个方框呢
追答
SizeF size = g.MeasureString(Info.Num,font );
float ratex = bmp.Width / size.Width;
float ratey = bmp.Height / size.Height;
g.ScaleTransform(ratex, ratey);//调整一下缩放比例
g.DrawString( Info.Num, font, new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.foreColor)),0,0);
this.BackgroundImageLayout = ImageLayout.None;
this.BackgroundImage = bmp;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询