1

前述のように、SignaturePad コンポーネントを使用して取得した署名を SQL Server データベースに適切に保存するにはどうすればよいでしょうか? コンポーネントによって使用される GetImage(false) メソッドが Bitmap を返し、後で Stream を使用して Bitmap を JPEG と配列バイトに圧縮することを考えると、簡単なはずです。次に、バイト配列を SQL Server データベースに直接保存する必要があります。ただし、このアプローチの問題は、データベースから画像を取得すると、画像がすべて黒くなることです。ストロークがキャプチャされなかったようですが、面白いことに、SignaturePadの背景色が白に設定され、ストロークの色が黒に設定されていました。

Xamarin.Android ボタンの OnClick イベント ハンドラー

var signature = this.SignatureView.GetImage(false); // This returns the Bitmap from SignaturePad.
var imageData = this.ImageToByteArray(signature); // This converts the Bitmap to byte[].

var result = this.SaveDataAsync(imageData); // Save the byte[] to the database.

Xamarin.Android 拡張メソッド

private byte[] ImageToByteArray(Bitmap image)
{
    if (image == null) return null;

    byte[] result;

    using (var stream = new MemoryStream())
    {
        image.Compress(CompressFormat.Jpeg, 100, stream);
        result = stream.ToArray();
        stream.Flush();
    }

    return result;
}

これは iOS で行ったのと同じアプローチですが、Android では機能しません。どんなアイデアや実用的な解決策も大歓迎です。

ありがとう!

Xamarin フォーラム - コンポーネント セクションからコピー

4

1 に答える 1

0

さて、この問題の解決策を見つけたと思います。これは、このスレッドSignature Pad for Xamarin.Formsで説明されています。Stroke と Background の色のプロパティは既に指定されているのに、GetImage() メソッド内で色を指定する必要がある理由がわかりません。まあ、画像を描画するために必要な色は、プロパティの色と同じではないと思います。

于 2015-08-12T18:59:57.360 に答える