Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Similar documents
アプリケーション

スライド 1

Prog2_15th

グラフィックス

Prog2_12th

C#の基本

Visual Studio2008 C# で FoxPro に似た数値入力を行う xbase 言語製品が市場から撤退するにつれ FoxPro や他の xbase 言語ツールでアプリ ケーション開発を行っていらした方にとって どの開発言語を選択するかということ が緊急の課題になっていることと存じます

PowerPoint プレゼンテーション

TOEIC

C#の基本2 ~プログラムの制御構造~

Prog2_4th

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

Microsoft Word - VB.doc

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

Prog2_2nd

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

ルーレットプログラム

Microsoft Word -

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ブロック パニック

Userコントロール

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

Visual Studio 2008 C# で FoxPro を運用する Object Oriented XBASE Forum :Nobuyuki Ichioka 掲載開始 2009 年 1 月 14 日更新日 2009 年 1 月 24 日 FoxProで作成したマルチスレッドのCOM(DLL)

A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3,

Java講座

Microsoft Word 練習問題の解答.doc

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

ICONファイルフォーマット

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

CodeGear Developer Camp

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

ブロック崩し風テニス

VFD256 サンプルプログラム

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

GUIプログラムⅣ

VB.NET解説

// // GENES Version 1.00 突然変異と自然

MVP for VB が語る C# 入門

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

PowerPoint プレゼンテーション

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

Microsoft PowerPoint - visualprogram.ppt

TestDesign for Web

...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 2 れを含めておかないと Database への更新がきかない oadp.fill(dtbl); dgvk

ListViewコントロール

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

プログラミング基礎

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

テキストファイルの入出力1

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

untitled

6.StatusMemory-VS2010

ウィンドウ操作 応用

NotifyIconコントロール

プロセス間通信

JavaScript演習

ドッグファイト

かべうちテニス

14.event-handling

Windows (L): D:\jyugyou\ D:\jyugyou\ D:\jyugyou\ (N): en2 OK 2

Microsoft Word - no11.docx

< F2D B825082CC96E291E82E6A7464>

ExcelVBA

Java演習(4) -- 変数と型 --

Visual Studio Do-It-Yourself シリーズ 第 1 回 Windows ゕプリケーション開発の概要 -1-

< F2D E E6A7464>

14.event-handling

JavaプログラミングⅠ

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

2 回路図

BarCode for ASP.NET Web Forms

簡単操作マニュアル 目次 1 ( 例 ) 品番 ( 固定 ) + シリアル番号 ( 可変 ) を作成する ( 例 ) 品番 ( 手入力 ) + シリアル番号 ( 可変 ) を作成する ( 例 ) チェックデジットを付加する

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

WPF アプリケーションの 多言語切替

ファイル操作

Prog2_10th

スライド 1

Microsoft Word - VisualC++利用法2.doc

平成 29 年度卒業研究 初心者のためのゲームプログラミング用 教材の開発 函館工業高等専門学校生産システム工学科情報コース 5 年 25 番細見政央指導教員東海林智也

イントロダクション

バスケットボール

PowerPoint プレゼンテーション

データを TreeView コントロールで表示 VisualStudio2017 の Web サイトプロジェクトで bootstrap, 及び script フォルダの js ファイルが使用できるマスターページを親とする TestTreeView.aspx ページを作成します 下記の html コー

Microsoft Word - VB_10.doc

PowerPoint プレゼンテーション

簡単操作マニュアル 目次 1 ( 例 ) 品番( 固定 ) + シリアル番号( 可変 ) を作成する ( 例 ) 品番( 手入力 ) + シリアル番号( 可変 ) を作成する ( 例 ) チェックデジットを付加する ( 例 ) 数字 2 桁の月をアルファベ

3D回転体プログラム

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

プログラミング基礎

Transcription:

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバーコード OCX や バーコード対応レ ポートツールが豊富にありますので それほど困ることは無いと思われます しかし JAN13 程度のものでしたら それほど難しくなくバーコードイメージを作成す ることが出来ます 実際にプログラミングを行ってみましょう Object Oriented XBASE Forum Nobuyuki Ichioka 掲載開始日 :2009 年 2 月 9 日 ご説明には Visual Studio 2008 Professional Edition SP1 を使用しました Visual Studioを立ち上げ新規プロジェクトを作るそれでは VS2008を立ち上げてみましょう [ ファイル ]-[ 新規作成 ] から [ プロジェクト ] を選択します 新しいプロジェクト というダイアログが開きます そこでプロジェクト名をJAN13BarcodeImageCreateとしてください ( 名称は任意で結構です ) フォーム1のプロパティに JAN13バーコード作成 と記入します ツールボックスから PictureBoxを選択しデザインしているフォームの上側に配置します SizeをWidth230 Height70に BackColorを White BorderStyleをFixedSingleに設定します 次にMaskedTextBoxを1つ設置し IMEModeをDisable MASKを9999999999999 にします (9を13ケ) PromptCharを半角スペース1 文字にします LABELをMaskedTextBoxのとなりに設置しプロパティのTextに JAN13コードを入力 - 1 -

と記入します Buttonを1つ設置して Textプロパティに JAN13バーコードを描画 を記入してください Button1プロパティで Clickイベントをダブルクリックで イベントのプロシージャを自動生成しておきます コードエディタでプログラムを書く それでは ひたすらコードを書いてみましょう コードは下記のとおりとなります Bitmap bmpbarcode; private String[] arysprefixptrn = new String[10]; // プリフィックスパターンストア用 private int frmh = 0; private int nbarx = 0; private int nbary = 0; private Pen drawpen; public Form1() InitializeComponent(); /* この下 3 行を記入 */ bmpbarcode = new Bitmap(pictureBox1.Width, picturebox1.height); picturebox1.image = bmpbarcode; InitializePreFixPattern(); private void InitializePreFixPattern() //************************************// // バーコードの左側プリフィックス対応 // // 奇数 / 偶数パリティデータ // //************************************// arysprefixptrn[0] = "111111"; arysprefixptrn[1] = "110100"; arysprefixptrn[2] = "110010"; arysprefixptrn[3] = "110001"; arysprefixptrn[4] = "101100"; arysprefixptrn[5] = "100110"; arysprefixptrn[6] = "100011"; arysprefixptrn[7] = "101010"; arysprefixptrn[8] = "101001"; arysprefixptrn[9] = "100101"; - 2 -

private void button1_click(object sender, EventArgs e) if (!CheckJAN13Digit(this.maskedTextBox1.Text)) BarcodeImageClear(); MessageBox.Show("JAN コード入力エラー "); else WriteBarcode13(this.maskedTextBox1.Text); string sbmpfilename = "c:\\~ 環境に合わせて ~\\JAN13BCD" + this.maskedtextbox1.text + ".bmp"; bmpbarcode.save(sbmpfilename); // 自動的に BMP ファイルを作成登録 private string MakeJAN13Digit(string sbarcode12) // MakeJAN13Digit(" バーコード 12 桁文字列 ") // // 13 桁目のチェックデジットを生成して戻す // // エラーチックは実施していない // int nsum = 0; int ni; char[] arycbarcode = new char[] ; arycbarcode = sbarcode12.tochararray(); for ( ni = 1; ni < 12; ni += 2) nsum = nsum+int.parse(arycbarcode[ni].tostring()); nsum *= 3; for ( ni = 0 ; ni < 12 ; ni+= 2 ) nsum = nsum+int.parse(arycbarcode[ni].tostring()); nsum = ((nsum/10)+1)*10 -nsum; return sbarcode12 + nsum.tostring(); private bool CheckJAN13Digit(string sbarcode13) // CheckJAN13Digit(" バーコード 13 桁文字列 ") // // 13 桁目のチェックデジットについて検証 // // エラー時 false で戻す // if (sbarcode13.length!= 13) return false; if (sbarcode13!= MakeJAN13Digit(sBarcode13.Substring(0,12))) return false; return true; - 3 -

private void BarcodeImageClear() // picturebox1 の描画データを CLEAR します // // グラフィックスオブジェクトを取得し // // 戻り時破棄しているので他の描画プロシー // // ジャ内の描画処理の間にこの関数を呼ばな // // いようにします // Graphics g = Graphics.FromImage(pictureBox1.Image); g.clear(color.white); picturebox1.refresh(); g.dispose(); private void SetDrawStartPoint() // picturebox1 に描画するバーコード線の開始 // // 位置を設定します // frmh = picturebox1.height - 26; nbarx = 14; nbary = 4; drawpen = new Pen(Color.Black, 1); private void WriteBarcode13(string sbarcode13) // WriteBarcode13(" バーコード 13 桁文字列 ") // // 13 桁のバーコード数値をパラメータとして // // 与える バーコード数値についてチェック // // 行っていないので事前に // // CheckJAN13Digit(string sbarcode13) を実 // // 行すること // // バーコードを描画するメインプロシージャ // int ni; Font fgothic10 = new Font("MS ゴシック ", 10); char[] arycbarcode = new char[] ; arycbarcode = sbarcode13.tochararray(); int nprefix = int.parse(arycbarcode[0].tostring()); char[] PreFixPTRN = arysprefixptrn[nprefix].tochararray(); BarcodeImageClear(); SetDrawStartPoint(); Graphics g = Graphics.FromImage(pictureBox1.Image); g.drawstring(arycbarcode[0].tostring(), fgothic10, Brushes.Black, nbarx - 8, frmh + 8); WriteGuardBar(g); for (ni = 1; ni < 7; ni++) g.drawstring(arycbarcode[ni].tostring(), fgothic10, Brushes.Black, nbarx, frmh + 8); WriteEachBarLine(g, arycbarcode[ni], PreFixPTRN[nI -1]); WriteGuardBar(g); for (ni = 7; ni < 13; ni++) g.drawstring(arycbarcode[ni].tostring(), fgothic10, Brushes.Black, nbarx, frmh + 8); WriteEachBarLine(g, arycbarcode[ni], '2'); WriteGuardBar(g); picturebox1.refresh(); g.dispose(); - 4 -

private void WriteGuardBar(Graphics g) // バーコードのガードバーを描画する // // 両端と中央に縦線を入れる // // WriteBarcode13(string sbarcode13) から // // 呼ばれる // for (int ni = 0; ni < 2; ni++) g.fillrectangle(brushes.black, nbarx, nbary, 2, frmh + 16); private void WriteEachBarLine(Graphics g, char cpos, char cpattern) // 描画するプロシージャへの分岐を担当 // // WriteBarcode13 から呼ばれる // switch (cpos) WriteBcd0(g, cpattern); WriteBcd1(g, cpattern); WriteBcd2(g, cpattern); case '3': WriteBcd3(g, cpattern); case '4': WriteBcd4(g, cpattern); case '5': WriteBcd5(g, cpattern); case '6': WriteBcd6(g, cpattern); case '7': WriteBcd7(g, cpattern); case '8': WriteBcd8(g, cpattern); case '9': WriteBcd9(g, cpattern); - 5 -

private void WriteBcd0(Graphics g, char cpattern) // バーコード値 [0] に対応 // g.fillrectangle(brushes.black, nbarx, nbary, 2, frmh ); g.fillrectangle(brushes.black, nbarx, nbary, 6, frmh ); private void WriteBcd1(Graphics g, char cpattern) // バーコード値 [1] に対応 // case '0' : case '2' : - 6 -

private void WriteBcd2(Graphics g, char cpattern) // バーコード値 [2] に対応 // private void WriteBcd3(Graphics g, char cpattern) // バーコード値 [3] に対応 // g.fillrectangle(brushes.black, nbarx, nbary, 8, frmh); - 7 -

private void WriteBcd4(Graphics g, char cpattern) // バーコード値 [4] に対応 // private void WriteBcd5(Graphics g, char cpattern) // バーコード値 [5] に対応 // - 8 -

private void WriteBcd6(Graphics g, char cpattern) // バーコード値 [6] に対応 // g.fillrectangle(brushes.black, nbarx, nbary, 8, frmh); private void WriteBcd7(Graphics g, char cpattern) // バーコード値 [7] に対応 // - 9 -

private void WriteBcd8(Graphics g, char cpattern) // バーコード値 [8] に対応 // private void WriteBcd9(Graphics g, char cpattern) // バーコード値 [9] に対応 // // -------------------- END of Procedure -------------------------// - 10 -

プログラムを実行してみましょう コードを書着終わりましたら テスト RUN を行ってみます 適当な商品についている JAN13 コードを入力してボタンを押してみてください 上図のようにバーコードが描画されましたでしょうか 商品のバーコードと比べてみ て同じように描かれていれば完成です お疲れ様でした - 11 -