1

私はどこでも検索したasp.netでバーコードのリストを表示しようとしています.IDAutomationHC39Mが無料であることがわかりました。今、私はそれを文字列の配列で使用しようとしましたが、ベアコードのリストが表示されますが、下部にSYSTEM.Sが表示されるため、文字列の配列を読み取れません。私のコード

public String[] Action = { "12345", "76543", "34567", "87654", "34567" };
    protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnGenerate_Click(object sender, EventArgs e)
{
    string barCode = txtCode.Text; 
    for (int i=1;i<=Action.Count();i++)
    {
         System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image();
         using (Bitmap bitMap = new Bitmap(Action.Length * 40, 80))
         {
             using (Graphics graphics = Graphics.FromImage(bitMap))
             {
                 Font oFont = new Font("IDAutomationHC39M", 16);
                 PointF point = new PointF(2f, 2f);
                 SolidBrush blackBrush = new SolidBrush(Color.Black);
                 SolidBrush whiteBrush = new SolidBrush(Color.White);
                 graphics.FillRectangle(whiteBrush, 0, 0, bitMap.Width, bitMap.Height);
                 graphics.DrawString("*" + Action + "*", oFont, blackBrush, point);
             }//
             using (MemoryStream ms = new MemoryStream())
             {
                 bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                 byte[] byteImage = ms.ToArray();

                 Convert.ToBase64String(byteImage);
                 imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage);
             }
         }    
             plBarCode.Controls.Add(imgBarCode);
         }        
}

クライアント側にはプレースホルダーがあります

<asp:PlaceHolder ID="plBarCode" runat="server" />

私のコードで何が問題になっているのか教えていただけますか?

4

1 に答える 1

2

簡単な答え: 交換

graphics.DrawString("*" + Action + "*", oFont, blackBrush, point);

graphics.DrawString("*" + Action[i-1] + "*", oFont, blackBrush, point);

より長い答え: あなたがしているのは、単一の反復 run ごとに配列全体を渡すことです。ただし、Action配列を反復処理する場合は、各反復実行の現在の文字列にアクセスする必要があります。これは、配列のインデックスを角かっこ ( [i-1]) で渡すことによって行われます。i-1Rawling が指摘したように、あなたiは 1 から まで実行しているCountが、配列はゼロベースのインデックスを使用しているためである必要があります (最初の要素は と呼ばれます[0])。

于 2012-09-06T08:36:28.497 に答える