Xambarcodeを使用した人間が読めるテキストの有無にかかわらずバーコードを作成する
幅や間隔の異なる平行線は、事実上どこにでもあります。バーコードは、光学表現にデータを割り当てるための標準となった長い歴史があり、店舗、輸送コンテナ、その他無数のアイテムで幅広い商品を識別することを可能にし、その結果、複数の業界プロセスが合理化されました。
幅や間隔の異なる平行線は、事実上どこにでもあります。バーコードは、光学表現にデータを割り当てるための標準となった長い歴史があり、店舗、輸送コンテナ、その他無数のアイテムで幅広い商品を識別することを可能にし、その結果、複数の業界プロセスが合理化されました。
バーコードは非常に人気があり、便利なので、アプリケーションでそのような方法でデータを表現する必要があるかもしれないことは驚くことではなく、InfragisticsのXAMLパッケージ(WPF Silverlight、Windows PhoneのNetAdvantage)はまさにそれを支援するために装備されています。XamBarcode は、実際には基本クラスであり、さまざまな標準に基づく線や図形を使用してデータをグラフィックとして表示できるコントロールのファミリの一般名です。かなりの数のシンボルがあるので、興味がある場合は、ドキュメントでそれらについて幅広く読むことができます(これはSilverlightヘルプページですが、他の製品にも同じ情報が含まれています)。それぞれが開発者のためにできるだけ多くの作業を節約するよう努めています - それらを作成するためのルールを知る必要はなく、ほとんどの場合、エンコードして楽しむために必要なデータを提供するだけです。また、各コントロールは 1 つのシンボルのみを処理するため、XAML でのバーコードの追加もはるかに簡単になります (以下に示すように、非常に簡単です)。
現在、非線形構造のために追加のオプションがある特別なコード(QRコードなど)がいくつかありますが、Code 128やEan / Upcコードなどのほとんどの線形タイプでは、データがすぐ下に表示されます。12.1では、CTPイメージングライブラリとともにそれを隠すことができる小さなアップデートがあり、「バーコード」の作業が楽になります。
人間が読めるテキスト
バーコードは機械で読み取り可能であり、一部の規格ではバーコードリーダーがなくても意味を持つフレンドリーなイメージを提供するため、その部分は非常に適切に人間が読めるテキストと呼ばれています。

これはすべて非常に素晴らしいことですが、バーコードだけが必要な場合もあれば、そのテキストが必要ない場合や合理的でない場合もあるかもしれません。最近、データを表示するかインクを無駄にするかを制御できるように、そのようなプロパティを持つコントロールに新しいプロパティが追加されました。単純な 'ShowText' プロパティが、次のコードで使用できるようになりました。
- コード39
- Code 128
- EAN/UPCの
- インターリーブ 2 / 5
- GS1データバー
- ロイヤル メール
小さな変更ですが、インパクトを与える可能性が非常に高いので、使い方を見てみましょう!
Adding Barcodes
まず、必要な参照 (名前はプラットフォーム間で同じです) Infragistics<platform>.v12.1.dll、Infragistics<platform> を追加します。DataVisualization.v12.1.dll、インフラジスティックス<プラットフォーム>。Controls.Barcodes.v12.1.dll. XamBarcodeコントロールの設定、データの提供、および人間が読めるテキストの制御は、バインディングを介してXAMLだけで簡単に行うことができます。たとえば、ユーザーにフィールドにデータを入力し、"ShowText"をバインドするための何らかのスイッチ(トグルボタン、ラジオボタン、チェックボックスなど)を与えてみましょう。
<TextBox x:Name="userInput"/> <ToggleButton x:Name="textToggle" IsChecked="True">show/hide text</ToggleButton>
次に、Xam<code>バーコードコントロールをページに追加します。
xmlns:ig="http://schemas.infragistics.com/xaml"
<ig:XamCode39Barcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" />
<ig:XamCode128Barcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Column="1"/>
<ig:XamEanUpcBarcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Column="2"/>
<ig:XamInterleaved2Of5Barcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Row="1" />
<ig:XamGs1DataBarBarcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Row="1" Grid.Column="1"/>
<ig:XamRoyalMailBarcode Data="{Binding Text, ElementName=userInput}" ShowText="{Binding IsChecked, ElementName=textToggle}" Grid.Row="1" Grid.Column="2"/>
いくつかのアレンジとスタイリングの後、デモ缶は次のようになります。

私が追加したいくつかの追加のボタンがあり、以下にコメントしますが、今のところ、チェックを外すとすべてのバーコードのテキストが失われる「show'hide」トグルボタンに興味があります。

それを最大限に活用する
テキストで何が起こるかをユーザーに制御させるだけでなく、それをコードで設定することもでき、そのための興味深いアプリケーションもいくつかあります。あなたができることは、読み取り可能なデータとともにバーコードをユーザーに表示し、印刷する直前またはその逆にそれを隠すことです。WPF アプリケーションでは次のようになります (バーコードがたくさんあるため、トグル ボタンを切り替えるだけですべてのバーコードに影響しますが、代わりにバーコード コントロールを使用できます)。
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
//print document
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
//turn text off if it's visible
if (this.textToggle.IsChecked == true)
{
this.textToggle.IsChecked = false;
_changed = true;
}
//print
printGrid.Measure(new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight));
printGrid.Arrange(new Rect(10,10,printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight));
printDialog.PrintVisual(printGrid, "Barcodes Docs");
// set text back on if it was removed for printing
if (_changed)
{
this.textToggle.IsChecked = true;
_changed = false;
}
}
}
また、先ほど述べたCTP機能は、Silverlightアプリケーションが画像をエンコードするのを支援することを目的としています。ユーザーがテキストの有無にかかわらず、アプリケーションにバーコードの画像を保存できるようにし、画像の品質を制御することもできます。
using (Stream stream = saveDialog.OpenFile())
{
Infragistics.Imaging.JpegImageEncoder jpgEncoder = new Infragistics.Imaging.JpegImageEncoder();
List<EncodingProperty> qualityList = new List<EncodingProperty>();
qualityList.Add(new JpegQualityProperty() { Quality = 100 });
jpgEncoder.Encode(bitmap, qualityList, stream);
}
結論
バーコードは、データパックが可能で、プロセスを合理化および整理でき、どこにでもあるため、便利であることは間違いありません。XAML バーコード コントロールを使用すると、このような一般的な機能を非常に簡単にアプリケーションに統合できます。これで、人間が読めるテキストで線形バーコードのビジュアルをさらに制御できるようになりました - ユーザーに適切に表示したり、画像に印刷したり保存したりするために、表示または非表示にすることができます。
上記のデモは、SilverlightとWPFでダウンロードできます。また、さまざまな種類のコードの動作を確認することもできますSilverlightオンラインサンプルをご覧ください!また、上記のリンクからWPFのものをダウンロードして、マーケットでWindows Phoneサンプルを見つけることができます。
Twitterでフォローしてください@Infragisticsでコンペティションに参加してくださいフェイスブック そして、私たちに投票することを忘れないでくださいCode Projectのリーダーズチョイス賞!