async Task SaveToFile(SharpDX.WIC.Bitmap bitmap) // debugging helper method, remove when no longer needed. { var width = bitmap.Size.Width; var height = bitmap.Size.Height; var pixels = new SharpDX.ColorBGRA[bitmap.Size.Width * bitmap.Size.Height]; bitmap.CopyPixels(pixels); var bytes = new byte[width * height * 4]; for (var i = 0; i < pixels.Length; ++i) { bytes[i * 4 + 0] = (byte)pixels[i].B; bytes[i * 4 + 1] = (byte)pixels[i].G; bytes[i * 4 + 2] = (byte)pixels[i].R; bytes[i * 4 + 3] = (byte)pixels[i].A; } var folder = ApplicationData.Current.LocalFolder; var file = await folder.CreateFileAsync("test.png", CreationCollisionOption.ReplaceExisting); using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream); encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)bitmap.Size.Width, (uint)bitmap.Size.Height, 96, 96, bytes); await encoder.FlushAsync(); } }
private void CopyWicPixelsToBuffer(RawBox box) { if (_bitmap != null) { lock (_bitmapLock) { _bitmap.CopyPixels(box, _intBuffer); } } }
/// <summary> /// Returns a System.Drawing.Bitmap object that is a copy of the image stored in this /// D2dWicGraphics object.</summary> /// <returns>System.Drawing.Bitmap copy of image</returns> public System.Drawing.Bitmap Copy() { var bitmap = new System.Drawing.Bitmap(m_wicBitmap.Size.Width, m_wicBitmap.Size.Height); System.Drawing.Imaging.BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, bitmap.PixelFormat); m_wicBitmap.CopyPixels(data.Stride, data.Scan0, data.Height * data.Stride); bitmap.UnlockBits(data); return(bitmap); }
public static Bitmap CopyWicBitmapToBitmap(WicBitmap wicBitmap, int width, int height, object wicBitmapLock) { var pixelData = new byte[width * height * 4]; lock (wicBitmapLock) { wicBitmap.CopyPixels(pixelData, width * 4); } var bitmap = new Bitmap(width, height); var lockRectangle = new Rectangle(0, 0, width, height); var pixelFormat = System.Drawing.Imaging.PixelFormat.Format32bppPArgb; var lockFlags = ImageLockMode.WriteOnly; var bitmapData = bitmap.LockBits(lockRectangle, lockFlags, pixelFormat); Marshal.Copy(pixelData, 0, bitmapData.Scan0, pixelData.Length); bitmap.UnlockBits(bitmapData); return(bitmap); }
public byte[] GetPixels() { if (bitmap == null) { throw new InvalidOperationException("Cannot GetPixels on SwapChain graphics"); } var width = bitmap.Size.Width; var numBytes = width * bitmap.Size.Height * 4; var bytes = new byte[numBytes]; unsafe { fixed(byte *pb = bytes) { bitmap.CopyPixels(width * 4, new IntPtr(pb), numBytes); } } return(bytes); }