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,根本就显示不了,保存的话值能保存上面那个方块,字也保存不了,求大神帮忙!!!!!!!
展开
 我来答
百度网友d242235
2016-06-02 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:821万
展开全部

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属性,让文本填满整个区域。

szqaly
推荐于2017-12-16 · TA获得超过1745个赞
知道大有可为答主
回答量:2107
采纳率:77%
帮助的人:1533万
展开全部
g.DrawString( Info.Num, font, new SolidBrush(System.Drawing.ColorTranslator.FromHtml(Info.foreColor)), 10, 10);
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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式