9

だから私はこのコードを継承しました、または誰かがこれを開発して先に進みましたが、今問題があり、私はそれを調べています...

私たちは c128 バーコードを生成していますが、それらを認証したところ、私が理解できない問題に気づきました。バー/スペースの幅は 10.5 ミルで、許容範囲は 15 ~ 21 ミル (1 ミル = 0.001 インチ) です。

レンダリング コードは、次のライブラリに基づいています: http://www.codeproject.com/KB/GDI-plus/GenCode128.aspxしかし、いくつか変更されています...

生成されるバーコードはすべて英数字で、特殊文字は含まれません。バー+スペースの幅は、エンコードされている文字に依存していると思いました。

使用されている設定は次のとおりです。

settings.Font = new Font ( FontFamily.GenericSansSerif, 12 );
settings.TopMargin = 10
settings.BottomMargin = 10
settings.LeftMargin = 10
settings.RightMargin = 10
settings.BarCodeHeight = 80
settings.DrawText = true
settings.BarCodeToTextGapHeight = 10
settings.InterCharacterGap = 2

推測すると、バーコードの高さがテキストとバーコードの長さに基づいているのではなく、バーの幅がバーコードの高さに基づいているためだと思います。しかし、私は仕様にあまり詳しくなく (レビューした後でも)、せいぜい初心者の C# プログラマーです...

4

3 に答える 3

15

これは直接的な答えではありませんが、バーコードの生成には十分にテストされたライブラリを使用することを強くお勧めします...いくつかの落とし穴があるため、バーコードを正しく取得するのは簡単ではありません...いくつかの無料...

.NET用の2つの無料バーコードライブラリ:http:
//barcoderender.codeplex.com/
http://www.codeproject.com/KB/graphics/BarcodeLibrary.aspx

于 2011-08-11T14:37:59.437 に答える
7

FWIW、これは非常に貧弱なバーコード生成ルーチンであり、それを放棄して、これらのバーコードを生成するために特別に作成されたライブラリを検索する必要があります。

ビットマップの作成に使用されるデバイス コンテキストの解像度は?

見た目から、コードはデフォルトで 96dpi のスクリーン デバイス コンテキストを使用しています。

バーコードは、最低 300dpi、できれば 600dpi、理想的には 2540dpi で生成する必要があります。

96dpi では、指定された精度に必要な解像度を達成することはできません。

解決策 1: 高解像度のプリンター デバイス コンテキストを使用するようにコードを変更し、その解像度でビットマップを作成します。現在、コードは任意に計算された幅を使用しています。

次の問題は、コードが整数バー幅を使用し、float にキャストすることです (うわー!)。これは、低 dpi (高 dpi でもそれほどではない) を扱う場合に問題になります。一部のバー/スペースは 2 ピクセルを使用し、別のバー/スペースは 3 ピクセルを使用する可能性があるため、不均一なバー/スペースを持つバーコードになってしまいます。

解決策 2: 同じ幅であると想定されるすべてのバー/スペースが同じ幅であることを確認します。

HTH

于 2011-08-11T14:50:37.387 に答える
2

Yahia が提案するように、無料のバーコード ライブラリを使用したくない場合は、:settings.InterCharacterGap の値を大きくするとうまくいくはずです。

ただし、これらのライブラリを確認する必要があると思います。このようにすると、維持するコードが少なくなり、ソフトウェアをより簡単に適応させることができ、バーコードの種類が変更された場合、車輪を再発明する代わりにすぐにサポートできる可能性があります.

于 2011-08-11T14:51:25.560 に答える