我有一个简单的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;
}