无法将条形码code128字体转换为图像

时间:2015-12-26 11:54:08

标签: c# windows fonts barcode code128

我有一个简单的Windows窗体应用程序,我试图将一些文本转换为图像。应用程序首先将所有字体加载到组合框中。

然后,用户从组合框项目列表[font]中选择他们想要使用的字体,然后更改标签控件中的字体以匹配所选字体。之后,它会获取标签中的文本并将文本转换为图像并在图片框中显示图像(下面的代码)。

除了当我选择我的字体"代码128",这是我需要的字体时,它完美地工作。我不得不下载字体["代码128"]并将其安装在我的电脑上,以便我可以创建一些条形码。当我选择"代码128"作为我想要的字体,文本将出现在标签控件中,但注释将显示在图片框中。它是唯一不起作用的字体。

我这样做的原因是因为我的标签打印机无法识别我的代码128字体,但我可以打印图像。我有另一个函数[此处未显示]计算校验和,并将开始和结束点添加到条形码中,该条形码工作正常。

在Windows 10上使用c#。

如果我遗漏任何细节或不清楚,请告诉我。

    private void Form1_Load(object sender, EventArgs e)
    {
        //Add all font names on computer to combobox1
        foreach (FontFamily fonts in System.Drawing.FontFamily.Families)
        {
            comboBox1.Items.Add(fonts.Name);
        }
    }

    private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)
    {
        //textBox1 Text = "TEST"
        //once the combobox1 selection is changed, relay the selected item's font to label1 and copy textBox1.Text to the label.
        label1.Font = new Font(comboBox1.Text, 20);
        label1.Text = textBox1.Text;

        //convert the textBox1.Text to an image and place it in the pictureBox1.
        pictureBox1.Image = convertText2Image();
    }

    private Image convertText2Image()
    {
        //this is how we convert the text to an image.
        Bitmap bmp = new Bitmap(1, 1);
        Graphics graphics = Graphics.FromImage(bmp);
        Font f = label1.Font; //use the exact font as label1, which is selected from the comboBox.
        SizeF sf = graphics.MeasureString(label1.Text, f);
        bmp = new Bitmap(bmp, (int)sf.Width, (int)sf.Height);
        graphics = Graphics.FromImage(bmp);
        graphics.DrawString(label1.Text, f, Brushes.Black, 0, 0);
        f.Dispose();
        graphics.Flush();
        graphics.Dispose();

        return bmp;
    }

0 个答案:

没有答案