绘制个性书籍标签以及保存或打印标签(C#)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/softimite_zifeng/article/details/54236582

       书籍的标签被经常来管理图书,为每一本书籍都贴上一个标签,既方便查阅书籍,又方便管理书籍。本博文介绍的程序主要实现以下3个功能:

1. 绘制书籍标签

2. 保存标签为图片

3. 打印标签

程序下载:点击打开链接

http://download.csdn.net/detail/softimite_zifeng/9732162

注:在本程序中用户需要自己手动输入书籍的标题、作者、出版社、ISBN码等信息,有点繁琐。如果是用于书籍管理,那么肯定效率不高。不过,子丰在之前的博文中有写过如何通过API直接获取书籍的信息。这样你只需要手动输入书籍的ISBN码即可,甚至,如果你有扫码枪,直接扫描一个书籍背面的条形码,即可通过API迅速地获取到该书籍的详细信息。

详情请参考:点击打开链接

http://blog.csdn.net/softimite_zifeng/article/details/54234748

1. 绘制书籍标签。标签上有书籍的标题、作者、出版社、ISBN码、ISBN条形码以及用户根据自己的需要设置的内容。如果用于图书管理,可以自定义一种唯一ID用于标识该书籍,并且可以将该ID绘制在标签上,将条形码更换为该ID的条形码。

//绘制Label
private static void paintGraphics(Graphics g, int times = 1)
{
    //通用文字字体
    Font font1 = new Font("Arial", 6f * times, FontStyle.Regular);
    //标题的字体
    Font font2 = new Font("黑体", 12f * times, FontStyle.Bold);
    //ISBNx的字体
    Font font3 = new Font("Arial", 8f * times, FontStyle.Regular);
    //实验室名的字体
    Font font4 = new Font("Arial", 8f * times, FontStyle.Bold);
    //ISBN条码显示清晰
    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
    g.DrawImage(ZXingBar(ISBN), 15 * times, 75 * times, 160 * times, 50 * times);
    //文本居中显示,主要用于标题和ISBNx居中显示
    StringFormat format = new StringFormat { Alignment = StringAlignment.Center };
    //消除文字锯齿
    g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
    //书籍信息:标题,作者,出版社,ISBN
    g.DrawString(Title, font2, Brushes.Black, 98 * times, 6 * times, format);
    g.DrawString("作者:" + Author, font1, Brushes.Black, 10 * times, 30 * times);
    g.DrawString("出版社:" + Publisher, font1, Brushes.Black, 10 * times, 45 * times);
    g.DrawString("ISBN:" + ISBN, font1, Brushes.Black, 10 * times, 60 * times);
    //自定义信息
    g.DrawRectangle(new Pen(Brushes.Black), 130 * times, 30 * times, 53 * times, 35 * times);
    g.DrawString("softimite", font4, Brushes.Black, 131 * times, 35 * times);
    g.DrawString("子丰", font1, Brushes.Black, 144 * times, 50 * times);
}

//绘制条码
private static Bitmap ZXingBar(string isbn)
{
    //设置条形码规格
    EncodingOptions encodeOption = new EncodingOptions();
    //必须制定高度、宽度
    encodeOption.Height = 80;
    encodeOption.Width = 200;
    BarcodeWriter wr = new BarcodeWriter();
    wr.Options = encodeOption;
    //条形码规格:12(无校验位)或13位数字
    wr.Format = BarcodeFormat.EAN_13;
    //生成条码图片
    return wr.Write(isbn);
}
2. 保存标签为图片。程序中将该标签保存为jpg图片,并且默认图片名称为书籍的isbn码。

//保存
private void saveBtn_Click(object sender, EventArgs e)
{
    try
    {
        if (labelPb.Image == null)
        {
            MessageBox.Show("没有可保存的标签");
            return;
        }
        SaveFileDialog fileDialog = new SaveFileDialog();
        fileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        fileDialog.RestoreDirectory = true;
        fileDialog.Filter = "图片文件(*.jpg)|*.jpg";
        fileDialog.FileName = "Label-" + isbnTxt.Text.Trim() + ".jpg";
        if (fileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string filePath = fileDialog.FileName;
            labelPb.Image.Save(filePath);
            MessageBox.Show("标签 Label-" + isbnTxt.Text.Trim() + " 保存成功");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("标签 Label-" + isbnTxt.Text.Trim() + " 保存失败: " + ex.Message);
    }
}
3. 打印标签。程序中提供了打印和打印预览两个功能。

1)打印

//打印
private void printBtn_Click(object sender, EventArgs e)
{
    try
    {
        if (labelPb.Image == null)
        {
            MessageBox.Show("没有可打印标签");
            return;
        }
        PrintDialog printDg = new PrintDialog();
        printDg.Document = GenLabel.LabelDocument;
        if (printDg.ShowDialog() == DialogResult.OK)
        {
            try
            {
                printDg.Document.Print();
                MessageBox.Show("标签 " + isbnTxt.Text.Trim() + " 打印成功");
            }
            catch
            {   
                //停止打印
                printDg.Document.PrintController.OnEndPrint(printDg.Document, new System.Drawing.Printing.PrintEventArgs());
                MessageBox.Show("标签 " + isbnTxt.Text.Trim() + " 打印失败");
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("异常: " + ex.Message);
    }
}

2)打印预览

//打印预览
private void previewBtn_Click(object sender, EventArgs e)
{
    try
    {
        if (labelPb.Image == null)
        {
            MessageBox.Show("没有可打印标签");
            return;
        }
        PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
        printPreviewDialog.Document = GenLabel.LabelDocument;
        printPreviewDialog.ShowDialog();
    }
    catch (Exception ex)
    {
        MessageBox.Show("异常: " + ex.Message);
    }
}
下面贴出几张图片,分别展示这3个功能:

1. 绘制书籍标签


2. 保存标签为图片


3. 打印标签

1)打印


2)打印预览


展开阅读全文

没有更多推荐了,返回首页