分析InkCanvas保存的图片是否为全部白色
1. 从InkCanvas保存图片到Pictures下面
2. 读取保存的图片分析每个像素是否全为白色
(由于擦除的痕迹为白色,可能会有不是FFFFFF的痕迹存在,故RGB均大于200以上的点视为白色)
public async Task<bool> CheckIfSignatureAllWhiteEx(InkStrokeContainer container) { bool isPixWhite = true; try { int originalPixelWidth = (int)inkCanvas.ActualWidth; int originalPixelHeight = (int)inkCanvas.ActualHeight; StorageFolder storageFolder = KnownFolders.PicturesLibrary; StorageFile imageFile = await storageFolder.CreateFileAsync("test1.png", CreationCollisionOption.ReplaceExisting); using (IRandomAccessStream stream = await imageFile.OpenAsync(FileAccessMode.ReadWrite)) { await container.SaveAsync(stream); } IRandomAccessStream fileStream = await imageFile.OpenAsync(FileAccessMode.Read); WriteableBitmap bitmap = new WriteableBitmap(originalPixelWidth, originalPixelHeight); await bitmap.SetSourceAsync(fileStream); Color col = new Color(); DataReader DR = DataReader.FromBuffer(bitmap.PixelBuffer); byte[] bytes = new byte[bitmap.PixelBuffer.Capacity]; DR.ReadBytes(bytes); for (int x = 0; x < bitmap.PixelWidth; x++) { for (int y = 0; y < bitmap.PixelHeight; y++) { col.B = bytes[(y * bitmap.PixelWidth + x) * 4]; col.G = bytes[(y * bitmap.PixelWidth + x) * 4 + 1]; col.R = bytes[(y * bitmap.PixelWidth + x) * 4 + 2]; col.A = bytes[(y * bitmap.PixelWidth + x) * 4 + 3]; if(col.A!=0 && (col.R<200 || col.G < 200 || col.B < 200)) { isPixWhite = false; return isPixWhite; } } } return isPixWhite; } catch (Exception e) { return false; } }