运用 System.Drawing 绘制卡片 (解决:去掉DrawString写出的字体黑边)

该功能配合卡片彩色打印机和RFID卡制作人员信息卡片,主要用于人员身份信息的核实。

引用 system.drawing

g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; //去掉字体黑边

效果图和源代码如下:
运用 System.Drawing 绘制卡片 (解决:去掉DrawString写出的字体黑边)

using System;
using System.Drawing;

namespace TestImage
{
   
    class Program
    {
        static void Main(string[] args)
        {

            Image image = Image.FromFile(@"C:\Users\MelanceXin\source\repos\TestImage\TestImage\bin\Debug\image.png");

            Image codeImage = Image.FromFile(@"C:\Users\MelanceXin\source\repos\TestImage\TestImage\bin\Debug\code.jpg");

            Person person = new Person
            {
                name = "曾振帅",
                org_name = "天津某某某某有限公司",
                personal_type_name = "现场负责人",
                work_type_name = "高压安装修造作业"
            };

            //保存制好之后的图片的完整路径
            string empcard_path = @"C:\Users\MelanceXin\source\repos\TestImage\TestImage\bin\Debug\pic\empcard.jpg";

            bool b = CreateImageModel(person, image, codeImage, empcard_path);


            image.Dispose();
            codeImage.Dispose();

            string result = b ? "制卡成功!!!!!" : "制卡失败!!";

            Console.WriteLine(result);
            Console.ReadKey();

        }


        /// <summary>
        /// 绘制卡片
        /// </summary>
        /// <param name="picimage"></param>
        /// <param name="codeimage"></param>
        /// <param name="empcard_path"></param>
        /// <returns></returns>
        public static bool CreateImageModel(Person person, Image picimage, Image codeimage, string empcard_path)
        {
            Image image = Image.FromFile(@"C: \Users\MelanceXin\source\repos\TestImage\TestImage\bin\Debug\0.png");
            Bitmap bitmap = new Bitmap(image);
            Graphics g = Graphics.FromImage(image);
            try
            {
                bitmap = new Bitmap(image, new Size(1024, 638));
                bitmap.SetResolution(300, 300);
                g = Graphics.FromImage(bitmap);

                //标题
                StringFormat format = new StringFormat();
                format.LineAlignment = StringAlignment.Center;  // 更正: 垂直居中
                format.Alignment = StringAlignment.Center;      // 水平居中
                StringFormat format1 = new StringFormat();
                format1.LineAlignment = StringAlignment.Center;  // 更正: 垂直居中
                format1.Alignment = StringAlignment.Near;      // 水平居左
                StringFormat format2 = new StringFormat();
                format2.LineAlignment = StringAlignment.Center;  // 更正: 垂直居中
                format2.Alignment = StringAlignment.Far;      // 水平居右


                //证件照
                Image id_image = picimage;
                RectangleF id_rec = new Rectangle(new Point(130, 140), new Size(250, 320));
                g.DrawImage(id_image, id_rec);
                //二维码
                Image qrcode_image = codeimage;
                //Image qrcode_image = Image.FromFile(@_empinfo.Qrcode_path);
                RectangleF qrcode_rec = new Rectangle(new Point(630, 240), new Size(320, 320));
                g.DrawImage(qrcode_image, qrcode_rec);


                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;   //去掉字体黑边

                //文字信息
                //人员姓名
                RectangleF nameval_rec = new Rectangle(new Point(20, 470), new Size(480, 60));
                g.DrawString(person.name, new Font("黑体", 12f, (FontStyle.Bold)), new SolidBrush(Color.FromArgb(95, 95, 95)), nameval_rec, format);
                //公司名称
                RectangleF coval_rec = new Rectangle(new Point(20, 510), new Size(480, 100));
                //g.DrawString(person_.org_name, new Font("黑体", 7f), Brushes.LightGray, coval_rec, format);
                g.DrawString(person.org_name, new Font("宋体", 7f), new SolidBrush(Color.FromArgb(95, 95, 95)), coval_rec, format);
                //人员类别
                RectangleF type_rec = new Rectangle(new Point(600, 50), new Size(340, 60));
                g.DrawString(person.personal_type_name, new Font("微软雅黑", 10f), Brushes.White, type_rec, format2);
                ////工种
                RectangleF worktype_rec = new Rectangle(new Point(600, 110), new Size(340, 50));
                g.DrawString(person.work_type_name, new Font("微软雅黑", 7f), Brushes.White, worktype_rec, format2);


                bitmap.Save(empcard_path);
            }
            finally
            {
                image.Dispose();
                bitmap.Dispose();
                g.Dispose();
            }
            return true;
        }

    }
    public class Person
    {
        public string name;
        public string org_name;
        public string personal_type_name;
        public string work_type_name;

    }
}