新建一个wpf应用程序,Xaml如下:

<Window x:Class="CreateBarCodeDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<Button Height="40" Width="80" Margin="20" Content="打印" Click="btnPrint_Click"/>
</StackPanel>
</Grid>
</Window>

新建打印窗体(wpf),Xaml如下:

<Window x:Class="CreateBarCodeDemo.PrintWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="打印人物卡" mc:Ignorable="d" Width="380" Height="250" WindowStartupLocation="CenterScreen" ContentRendered="Window_ContentRendered"> <Grid x:Name="printArea" Width="350" Height="210">
<Grid.RowDefinitions>
<RowDefinition Height="0.233*"/>
<RowDefinition Height="0.767*"/>
</Grid.RowDefinitions>
<Grid x:Name="grid" Margin="0" UseLayoutRounding="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.262*"/>
<ColumnDefinition Width="0.738*"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="0" d:LayoutOverrides="Width">
<Image x:Name="image" Source="Resources/logo.png" Stretch="Fill" Margin="0" Height="42.111"/>
</StackPanel>
<TextBlock x:Name="tbTitle" HorizontalAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Center" Text="人物卡" FontSize="22" Grid.Column="1" Margin="0"/>
</Grid>
<Grid Margin="0" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="0.812*"/>
<RowDefinition Height="0.188*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid Margin="0" Grid.RowSpan="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.4*"/>
<ColumnDefinition Width="0.25*"/>
<ColumnDefinition Width="0.4*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.2*"/>
<RowDefinition Height="0.4*"/>
</Grid.RowDefinitions>
<Label Content="姓名" FontSize="12" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
<Label Name="lbName" Grid.Column="1" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12"/>
<Label Content="年龄" Grid.Row="1" FontSize="12" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Name="lbAge" Grid.Row="1" Grid.Column="1" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12"/>
<Label Content="能力" Grid.Row="2" FontSize="12" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Name="lbSAbility" Grid.Row="2" Grid.Column="1" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12"/>
<Label Content="职位" Grid.Row="2" Grid.Column="2" FontSize="12" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Name="lbTitle" Grid.Row="2" Grid.Column="3" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12"/>
<Label Content="性别" Grid.Column="2" FontSize="12" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Content="职业" Grid.Column="2" Grid.Row="1" FontSize="12" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Name="lbSex" Grid.Column="3" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12"/>
<Label Name="lbJob" Grid.Row="1" Grid.Column="3" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12"/>
<Label Content="悬赏" Grid.Row="3" FontSize="14" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="2" Margin="0,0,-2,-2" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="14">
<Image Name="Imageid" Stretch="Fill" Height="50" Width="215" Margin="0,3,0,0"/>
</Label>
</Grid>
</Grid>
</Grid>
</Grid>
</Window>

项目引用BarcodeLib.dll(用来生成条码)。

两个窗体界面效果如下:

主窗体:

打印窗体:

主窗体的后置代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace CreateBarCodeDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void btnPrint_Click(object sender, RoutedEventArgs e)
{
PrintWindow pw = new PrintWindow("路飞", "男", , "海贼", "橡胶果实", "船长", "500000000$");
pw.ShowDialog();
}
}
}

点击打印时,ShoW出打印窗体;

通过打印窗体的构造函数,传入要打印的信息;

打印窗体呈现完后,执行了Window_ContentRendered事件,进行打印标签;

打印方法里通过调用BarcodeLib.Barcode生成一个条码;

最后将整个打印窗体的布局打印出来。

打印窗体的后置代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.IO; namespace CreateBarCodeDemo
{
/// <summary>
/// PrintWindow.xaml 的交互逻辑
/// </summary>
public partial class PrintWindow : Window
{
public PrintWindow()
{
InitializeComponent();
} /// <summary>
/// show出打印窗体时,通过构造函数传入要打印的信息
/// </summary>
/// <param name="tankNo"></param>
/// <param name="workOrderNo"></param>
/// <param name="ownerSerialnum"></param>
/// <param name="capacity"></param>
/// <param name="shellmaterial"></param>
/// <param name="tankType"></param>
/// <param name="barCode"></param>
public PrintWindow(string name, string sex, int age
, string job, string ability, string title, string barCode)
: this()
{
this.lbName.Content = name;
this.lbSex.Content = sex;
this.lbAge.Content = age;
this.lbJob.Content = job;
this.lbSAbility.Content = ability;
this.lbTitle.Content = title; CreateBarCode(barCode);
} /// <summary>
/// 将条码字符串转换成图形
/// </summary>
/// <param name="barCode">rfid</param>
private void CreateBarCode(string barCode)
{
ImageSource imageSource = null;
string data = barCode;
if (data != null)
{
try
{
System.Drawing.Image image = null;
using (BarcodeLib.Barcode b = new BarcodeLib.Barcode())
{
b.LabelFont = new System.Drawing.Font(b.LabelFont.FontFamily, / data.Length, System.Drawing.GraphicsUnit.Pixel);
b.IncludeLabel = true;
image = b.Encode(BarcodeLib.TYPE.CODE128, data, , );
} var stream = new MemoryStream();
image.Save(stream, System.Drawing.Imaging.ImageFormat.Png); stream.Seek(, SeekOrigin.Begin);
var bi = new System.Windows.Media.Imaging.BitmapImage();
bi.BeginInit();
bi.StreamSource = stream;
bi.EndInit(); imageSource = bi;
}
catch { }
}
this.Imageid.Source = imageSource;
} /// <summary>
/// 在窗口的内容呈现完毕之后发生
/// 打印流程卡标签并关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Window_ContentRendered(object sender, EventArgs e)
{
try
{
PrintDialog dialog = new PrintDialog();
//if (dialog.ShowDialog() == true)
{
DrawingVisual visual = new DrawingVisual();
using (DrawingContext dc = visual.RenderOpen())
{
Rect rect = new Rect(dialog.PrintableAreaWidth * 0.05,
dialog.PrintableAreaHeight * 0.05,
dialog.PrintableAreaWidth * 0.90,
dialog.PrintableAreaHeight * 0.90);
dc.DrawRectangle(new VisualBrush(printArea), null, rect);
} dialog.PrintVisual(visual, null);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
MessageBox.Show(ex.StackTrace);
}
this.Close();
}
}
}

打印的标签图片如下:

wpf应用程序 打印标签的更多相关文章

  1. 细数改善WPF应用程序性能的10大方法

    WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系 ...

  2. 【C#】1.3 WPF应用程序学习要点

    分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版) ...

  3. WPF 获取程序路径的一些方法,根据程序路径获取程序集信息

    一.WPF 获取程序路径的一些方法方式一 应用程序域 //获取基目录即当前工作目录 string str_1 = System.AppDomain.CurrentDomain.BaseDirector ...

  4. WPF 之 WPF应用程序事件

    当新建一个wpf应用程序,会自动生成一个App.xaml和MainWindow.xaml文件. 其中 App.xam 用来设置Application,应用程序的起始文件和资源及应用程序的一些属性和事件 ...

  5. 11、创建不使用XAML的WPF应用程序

    首先新建一个空的项目,然后添加一个类,引用一下程序集: PresentationCore.dll PresentationFramework.dll WindowsBase.dll namespace ...

  6. WPF发布程序后未授予信任的解决办法

    WPF发布程序后未授予信任的解决办法 基于浏览器的WPF应用程序由于需要比较高的操作权限,所以在项目的安全性属性中选择了“这是完全可信的应用程序”选项.可是,在发布部署后,在其他电脑上打开xbap文件 ...

  7. 【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

    原文:[ASP.NET Web API教程]3.3 通过WPF应用程序调用Web API(C#) 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的 ...

  8. WPF应用程序支持多国语言解决方案

    原文:WPF应用程序支持多国语言解决方案 促使程序赢得更多客户的最好.最经济的方法是使之支持多国语言,而不是将潜在的客户群限制为全球近70亿人口中的一小部分.本文介绍四种实现WPF应用程序支持多国语言 ...

  9. 在WPF应用程序中使用Font Awesome图标

    Font Awesome 在网站开发中,经常用到.今天介绍如何在WPF应用程序中使用Font Awesome . 如果是自定义的图标字体,使用方法相同. 下载图标字体 在官方网站或github上下载资 ...

随机推荐

  1. 《JS权威指南学习总结--9.5 类和类型》

    内容要点: 介绍了三种用以检测任意对象的类的技术,instanceof运算符.constructor属性,以及构造函数的名字. 但每种技术都不甚完美,本节总结了鸭式辩型,这种编程哲学更加关注对象可以完 ...

  2. java.lang.SecurityException:Invalid signature file digest forManifest main attributes

    今天在公司使用ant命令来从服务器中提取一个类的时候发现一个问题,每当我执行ant命令的时候就报如下异常: 想来想去猜测是Enovia提供的包没有做数字签名,但是如何解决这个问题呢?想不到解决方案只好 ...

  3. ajax通过设置Access-Control-Allow-Origin来实现跨域访问

    [在被请求的Response header中加入] // 指定允许其他域名访问(*代表所有域名)header('Access-Control-Allow-Origin:*');// 响应类型heade ...

  4. [ An Ac a Day ^_^ ] CodeForces 426C Sereja and Swaps 优先队列

    题意: 给你一个有n个数的序列 取一个区间 这个区间内的数可以与区间外的值交换k次 问这样的区间最大值是多少 思路: 看数据是200 时间复杂度O(n*n) 应该可以暴力 顺便学习一下优先队列 枚举区 ...

  5. 关于 JAVA 中使用 Preferences 读写注册表时要注意的地方

    要注意的只有一个地方,那就是键名或者项名不要包含大写字母,否则读不到数据. 代码是这样的: 1: Preferences preferences = Preferences.systemRoot(); ...

  6. Chapter 15_0 模块和包

    通常,Lua不会设置规则,相反会提供很多强有力的机制来使开发者有能力实现出最适应的规则. 然而,这种方法对于模块就不行了.模块系统的一个主要目标是允许以不同的形式来共享代码. 但若没有一项公共的规则就 ...

  7. 动态封杀与解封IP

    不论IIS6还是IIS7 都可以把需要封杀的IP加入封杀列表.但是需要注意的是我们代码写的是全部替换原先的数据.但是在IIS7下,执行的效果是原先的不替换,新加一批封杀 IP.当然IIS7下,如果新加 ...

  8. 移动端touch事件获取clientX, clientY

    目有个交互需要实现手指滑动的交互,pc端使用mousedown,mousemove,mouseup监听实现. 但在ios设备上mousemove是不好监听的,同类的方法是touchstart,touc ...

  9. 搭建localhost的目录环境

    .打开系统盘,默认是C:\Windows\System32\drivers\etc,如果系统盘是D盘就打开D:\Windows\System32\drivers\etc: .用记事本打开hosts: ...

  10. Linux查找文件中的字符串命令

    grep -nr 'archermind' -r, --recursive Read all files under each directory, recursively, following sy ...