예제 #1
0
파일: Helpers.cs 프로젝트: zyj0021/WinApi
 public static unsafe int SetDIBitsToDevice(IntPtr hdc, int xDest, int yDest, uint
                                            dwWidth, uint dwHeight, int xSrc, int ySrc, uint uStartScan, uint cScanLines,
                                            byte[] lpvBits, ref BitmapInfoHeader bitmapInfoHeader, DibBmiColorUsageFlag fuColorUse)
 {
     fixed(BitmapInfoHeader *bitmapInfoHeaderPtr = &bitmapInfoHeader)
     {
         return(Gdi32Methods.SetDIBitsToDevice(hdc, xDest, yDest,
                                               dwWidth, dwHeight, xSrc, ySrc, uStartScan, cScanLines, lpvBits, new IntPtr(bitmapInfoHeaderPtr),
                                               fuColorUse));
     }
 }
예제 #2
0
파일: Helpers.cs 프로젝트: zyj0021/WinApi
 public static int SetDIBitsToDevice(IntPtr hdc, int xDest, int yDest, uint
                                     dwWidth, uint dwHeight, int xSrc, int ySrc, uint uStartScan, uint cScanLines,
                                     byte[] lpvBits, ref BitmapInfo bitmapInfo, DibBmiColorUsageFlag fuColorUse)
 {
     using (var pbmi = BitmapInfo.NativeAlloc(ref bitmapInfo))
     {
         return(Gdi32Methods.SetDIBitsToDevice(hdc, xDest, yDest,
                                               dwWidth, dwHeight, xSrc, ySrc, uStartScan, cScanLines, lpvBits, pbmi.GetDangerousHandle(),
                                               fuColorUse));
     }
 }
예제 #3
0
파일: Helpers.cs 프로젝트: zyj0021/WinApi
        public static unsafe int SetRgbBitsToDevice(IntPtr hdc, int width, int height, IntPtr pixelBufferPtr,
                                                    int xSrc = 0,
                                                    int ySrc = 0, int xDest = 0, int yDest = 0, bool isRgba = true, bool isImageTopDown = true)
        {
            var bi = new BitmapInfoHeader
            {
                Size            = (uint)Marshal.SizeOf <BitmapInfoHeader>(),
                Width           = width,
                Height          = isImageTopDown ? -height : height,
                CompressionMode = BitmapCompressionMode.BI_RGB,
                BitCount        = isRgba ? (ushort)32 : (ushort)24,
                Planes          = 1
            };

            return(Gdi32Methods.SetDIBitsToDevice(hdc, xDest, yDest, (uint)width, (uint)height, xSrc, ySrc, 0,
                                                  (uint)height, pixelBufferPtr, new IntPtr(&bi),
                                                  DibBmiColorUsageFlag.DIB_RGB_COLORS));
        }