コード例 #1
0
ファイル: DIB.cs プロジェクト: soopercool101/BrawlCrate
        public static DIB FromBitmap(Bitmap src, int wAlign, int hAlign, PixelFormat format)
        {
            DIB dib = new DIB(src.Width, src.Height, wAlign, hAlign, format);

            dib.ReadBitmap(src);
            return(dib);
        }
コード例 #2
0
 public static unsafe void CopyTo(this Bitmap bmp, Bitmap dest)
 {
     int w = Math.Min(bmp.Width, dest.Width);
     int h = Math.Min(bmp.Height, dest.Height);
     using (DIB dib = new DIB(w, h, dest.PixelFormat))
     {
         dib.ReadBitmap(bmp, w, h);
         dib.WriteBitmap(dest, w, h);
     }
 }
コード例 #3
0
 public static DIB FromBitmap(Bitmap src, PixelFormat format)
 {
     DIB dib = new DIB(src.Width, src.Height, format);
     dib.ReadBitmap(src);
     return dib;
 }
コード例 #4
0
        internal virtual void EncodeLevel(VoidPtr dstAddr, DIB dib, Bitmap src, int dStep, int sStep, int level)
        {
            int mw = dib.Width, mh = dib.Height, aw = mw.Align(BlockWidth);
            if (level != 1)
            {
                dstAddr += GetMipOffset(ref mw, ref mh, level);
                using (Bitmap mip = src.GenerateMip(level))
                    dib.ReadBitmap(mip, mw, mh);
            }

            mw = mw.Align(BlockWidth);
            mh = mh.Align(BlockHeight);

            int bStride = mw * BitsPerPixel / 8;
            for (int y = 0; y < mh; y += BlockHeight)
            {
                VoidPtr sPtr = (int)dib.Scan0 + (y * dib.Stride);
                VoidPtr dPtr = dstAddr + (y * bStride);
                for (int x = 0; x < mw; x += BlockWidth, dPtr += dStep, sPtr += sStep)
                    EncodeBlock((ARGBPixel*)sPtr, dPtr, aw);
            }
        }