ただし、これを行う場合、バーコード全体を収めるために作成するビットマップのサイズをどのように知ることができますか?
ビットマップは、通常 DPI (ドット/インチ) で測定される特定の解像度を持つ物理デバイスに基づいています。Windows OS は、モニターに 96 または 120 dpi の論理解像度を割り当てます。プリンターの物理解像度は 300 ~ 600、場合によっては 1200 以上です。フィルムを処理するイメージセッターは、最大 2540 DPI 以上の物理解像度を持つことができます。
論理解像度とは、特定のデバイスで X ドットが 1 インチに等しいことを意味します。通常、これは近似値であり、ズームに使用できます。物理解像度は、デバイスが 1 インチあたり X ドット数を実現できる (または物理的に存在する) ことを示します。
バーコードを作成してデバイスに印刷するときは、そのデバイスの解像度を考慮する必要があります。幅が 4 インチのバーコードを 600 dpi のプリンターで印刷する場合、幅 4 * 600 = 2400 ピクセルのビットマップが必要になります。コードのバーを誤って縮小/拡大しないように、特定のデバイスでの印刷には他の影響があります。
私のとりとめのないポイントは、.WMF や .EMF などのベクター形式を使用してバーコードを生成し、出力先のデバイスに合わせて調整されたビットマップにレンダリングする必要があるということです。これにより、CorelDRAW や Adobe Illustrator などのベクター描画プログラムでコードを編集することもできます。
すべてではないにしてもほとんどのバーコードには、特定のエンコーディング (バーコードでエンコードされた記号) が与えられた場合の最終的なコードのインチ単位の幅を示す幅の公式があります。
少しの知識があれば、次のようなものを使用してバーコードを作成できます (この vb.net コードをコピーして、新しいプロジェクトの form.load またはボタン クリック イベントに貼り付けます)。
Dim gfx As Graphics = Me.CreateGraphics
Dim hdc As IntPtr = gfx.GetHdc()
Dim mf As System.Drawing.Imaging.Metafile = New Imaging.Metafile("c:\1.wmf", hdc, New RectangleF(0, 0, 5 * 2540, 1 * 2540), Imaging.MetafileFrameUnit.GdiCompatible)
Dim g As Graphics = Graphics.FromImage(mf)
g.PageUnit = GraphicsUnit.Inch
g.FillRectangle(Brushes.Blue, New RectangleF(0, 0, 5, 1))
g.FillRectangle(Brushes.Red, New RectangleF(0.25, 0.25, 4.5, 0.5))
g.Dispose()
mf.Dispose()
gfx.ReleaseHdc(hdc)
gfx.Dispose()
- メタファイル コンストラクターの寸法は、インチ * 2540 です。2540 は、1 インチあたり 0.01 ミリメートルを表す定数です。これは、基になる GDI が使用するものです。
CorelDRAW や Illustrator などの実際のベクター グラフィック プログラムで「1.wmf」ファイルを開きます。(MSPaint や Windows Preview などは使用できません...) 4.5 x 0.5 の赤い四角形が中央に配置された 5x1 の青い四角形があることに気付くでしょう。
これは、バーコードをメタファイルに描画する方法です。青と赤の長方形コードをバーコード描画ルーチンに置き換えます。透明なサイズ変更フレームを作成して、メタファイルに図面の境界を伝えることを忘れないでください。
g.FillRectangle(Brushes.Transparent, rectBounds)
バーコードを描画してメタファイルに保存したら、GDI+ を使用して読み込んで、出力デバイスの解像度を持つビットマップにレンダリングできます。もちろん、出力デバイスにベクトルまたはポストスクリプト プロセッサが組み込まれていない限り、最後のステップはビットマップを出力デバイスに送信することです。
まあ、それはおそらくあなたがトピックについて知りたいと思っていた以上のものでしたが、それは正しい方法であり、コードが「スキャン不能」であると非難された場合に、多大な時間と心痛を節約できます.. .
頑張ってください。それがどうなるか教えてください。