在C#中的单色位图上绘制文本

在C#中的单色位图上绘制文本,第1张

概述我的问题是我需要在单色位图上绘制文本.生成的位图必须打印在热敏POS打印机上,因此位图必须为1bpp. 我的图形不好,所以我试着找一些样品. 这是我尝试过的: Bitmap bmp = new Bitmap(300, 300, PixelFormat.Format1bppIndexed);using (Graphics g = Graphics.FromImage(bmp)){ Font 我的问题是我需要在单色位图上绘制文本.生成的位图必须打印在热敏POS打印机上,因此位图必须为1bpp.

我的图形不好,所以我试着找一些样品.
这是我尝试过的:

Bitmap bmp = new Bitmap(300,300,PixelFormat.Format1bppIndexed);using (Graphics g = Graphics.FromImage(bmp)){  Font Font = new Font("Arial",20,FontStyle.Bold,GraphicsUnit.Point);  g.Clear(color.White);  g.DrawString(text,Font,Brushes.Black,0);}bmp.Save(@"c:\x\x.bmp",ImageFormat.Bmp);

最后保存只是为了检查结果.
使用此代码,我得到以下异常:无法从具有索引像素格式的图像创建Graphics对象.

有没有办法将文本绘制到单色内存位图?

仅供参考:我需要这个,因为我的愚蠢POS打印机绘制0与O完全相同,所以它们无法区分……

解决方法 试试这个:
Bitmap bmp = new Bitmap(300,300);        using (Graphics g = Graphics.FromImage(bmp))        {            Font Font = new Font("Arial",GraphicsUnit.Point);            g.Clear(color.White);            g.DrawString("Hello",0);        }        System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new Rectangle(0,bmp.WIDth,bmp.Height),System.Drawing.Imaging.ImageLockMode.Readonly,System.Drawing.Imaging.PixelFormat.Format1bppIndexed);        Bitmap newBitmap = new Bitmap(300,bmpData.StrIDe,System.Drawing.Imaging.PixelFormat.Format1bppIndexed,bmpData.Scan0);        newBitmap.Save(@"c:\x\x.bmp");

这是一个可以帮助的链接:
http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

总结

以上是内存溢出为你收集整理的在C#中的单色位图上绘制文本全部内容,希望文章能够帮你解决在C#中的单色位图上绘制文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1263275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存