PictureBox показывает изображение как негатив фактического изображения - PullRequest
0 голосов
/ 14 марта 2012

У меня есть обычная картинка в форме, у меня есть изображение подписи, которое я восстанавливаю из базы данных, когда я сохраняю изображение с подписью, оно имело белый фон, а подпись была черной, но когда я восстановить изображение, у него черный фон и подпись белого цвета.

Может кто-нибудь объяснить, почему это происходит и как я могу это исправить ??

Вы можете найти изображение в следующем направлении http://www.mediafire.com/?c91awvyrya98m2c

Содержится в файле rar: Signature.jpg

Код следующий:

using System.Drawing;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
using System.Data;

namespace WindowsFormsApplication3
{
  class TestForm : System.Windows.Forms.Form
  {
    PictureBox oPictureBoxSignature;
    public Database Db;

    public TestForm()
    {
      Db = DatabaseFactory.CreateDatabase("DBTest");
      oPictureBoxSignature = new PictureBox();
    }

    public bool Save_Record()
    {
      byte[] Signature = imageToByteArray(oPictureBoxSignature.Image);
      return Save(Signature);
    }

    public bool Save(byte[] Signature)
    {
      using (DbCommand dbCmd = Db.GetStoredProcCommand("Save_Signature"))
      {
        Db.AddInParameter(dbCmd, "Signature", DbType.Binary, Signature);
        return Db.ExecuteNonQuery(dbCmd) > 0;
      }
    }

    public void Recover_Record(byte[] Signature)
    {
      oPictureBoxSignature.Image = byteArrayToImage(Signature);
    }

    public Image byteArrayToImage(byte[] byteArrayIn)
    {
      if (byteArrayIn != null)
      {
        MemoryStream ms = new MemoryStream(byteArrayIn);
        Image returnImage = Image.FromStream(ms);
        return returnImage;
      }
      else
        return null;
    }

    public byte[] imageToByteArray(System.Drawing.Image imageIn)
    {
      if (imageIn != null)
      {
        MemoryStream ms = new MemoryStream();
        imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        return ms.ToArray();
      }
      else
        return null;
    }
  }
}
...