2017-01-12 1 views
-3

私は2つのイメージを製品の最初のものと製品の2番目のものに分けている。 は、私はこのコード私はデバッグに問題があり、何が理由であるのか分からない。C#

private void button1_Click(object sender, EventArgs e) 
    { 
     string barcode = CMBIDCAT.Text+"345" + TXTIDP.Text +"012" ; 
     Bitmap bitmap = new Bitmap(barcode.Length * 20, 50); 
     using (Graphics graphics = Graphics.FromImage(bitmap)) 
     { 
      Font ofont = new Font("code 128", 30); 
      PointF point = new PointF(2f, 2f); 
      SolidBrush blackbursh = new SolidBrush(Color.Black); 
      SolidBrush whitebursh = new SolidBrush(Color.White); 
      graphics.FillRectangle(whitebursh, 0, 0, bitmap.Width, bitmap.Height); 
      graphics.DrawString("*" + barcode + "*",ofont, blackbursh, point); 
     } 
     using (DataTable dt = new DataTable()) 
     { 
      PIC2.Image = bitmap; 
      PIC2.Height = bitmap.Height; 
      PIC2.Width = bitmap.Width; 
     } 
private void button3_Click(object sender, EventArgs e) 
    { 
     MemoryStream ms = new MemoryStream(); 
     PIC1.Image.Save(ms, PIC1.Image.RawFormat); 
     byte[] byteImage = ms.ToArray(); 
     MemoryStream st = new MemoryStream(); 
     PIC2.Image.Save(st, PIC2.Image.RawFormat); 
     byte[] byteImage1 = st.ToArray(); 

     prd.ADD_PRODUCT(Convert.ToInt32(CMBIDCAT.SelectedValue), TXTIDP.Text, TXTNMP.Text, Convert.ToInt32(TXTFP.Text), Convert.ToInt32(TXTSP.Text), Convert.ToInt32(TXTTP.Text), TXTDES.Text, Convert.ToInt32(TXTQTE.Text), byteImage, byteImage1); 
     MessageBox.Show("تمت الاضافة بنجاح ", "عملية الاضافة",MessageBoxButtons.OK , MessageBoxIcon.Information); 
    } 

i don't know the reason for this issue please any one help me どのように私はこれをしてください解決することができる製品を作成するために使用します。

+0

ボタン1を押す前にボタン3をクリックしましたか?PIC2.Imageで値を割り当てているインボタン1のクリックイベントですか? –

+0

このタイトルは、「私がPLZヘルプmehをやっていることは分かりません!!!」と同じです。あなたは何を達成したいのですか?問題はどこですか? 「私のコードは機能していません」という記述はありません – chris579

+0

私の製品のバーコードを作成するためにボタン1を使用し、SQLdatabaseのテーブルに私の製品の値を保存するためにボタン3を使用します –

答えて

0

コメントするだけの担当者はいません。しかし、2番目の画像に新しいMemoryStreamを使用する必要がありますか?

MSDNによれば、書き込まれたストリームに書き込むべきではありません。

MSDN "Image.Save Method (Stream, ImageFormat)"

にコードを変更し

MemoryStream ms = new MemoryStream(); 
PIC1.Image.Save(ms, PIC1.Image.RawFormat); 
byte[] byteImage = ms.ToArray(); 

MemoryStream ms1 = new MemoryStream(); 
PIC2.Image.Save(ms1, PIC2.Image.RawFormat); 
byte[] byteImage1 = ms1.ToArray(); 

うまくいけば動作します。 :)

+0

私はこれを試して私に同じ結果を与える –

0

はフォーマットやストリームかどうかをデバッグ中にNULLである値を確認し、次のように解放するリソースのためのために、メモリストリームに文を「使って」使用することを検討してください:

 byte[] byteImage1; 

     using(MemoryStream ms = new MemoryStream()) 
     { 
      PIC1.Image.Save(ms, PIC1.Image.RawFormat); 
      byteImage1 = ms.ToArray(); 
     } 

@ Tim.Eが示唆するように、各画像に2つのメモリストリームを使用することを検討してください。

関連する問題