public static unsafe byte *PonierzMonohormatyczny(Bitmap Obraz) { IntPtr mr = Marshal.AllocHGlobal(Obraz.Width * Obraz.Height); OperacjeNaStrumieniu.Czyść((bool *)mr, Obraz.Width * Obraz.Height); byte *obsugiwana = (byte *)mr; int j = 0; BitmapData bp = Obraz.LockBits(new Rectangle(0, 0, Obraz.Width, Obraz.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); for (int y = 0; y < Obraz.Height; y++) { rgb *kr = (rgb *)((byte *)(bp.Scan0 + y * bp.Stride)); for (int x = 0; x < Obraz.Width; x++, kr++, obsugiwana++) { j = (*kr).r; j += (*kr).g; j += (*kr).b; byte zw = ((byte)(j / 3)); * obsugiwana = zw; } } Obraz.UnlockBits(bp); return((byte *)mr); }
unsafe static public void ObrótPlus90(byte *c, ref Size s) { OperacjeNaStrumieniu.ObrótY(c, s); OperacjeNaStrumieniu.Translacja(c, ref s); }
unsafe static public void Obrót180(byte *c, Size s) { OperacjeNaStrumieniu.ObrótX(c, s); OperacjeNaStrumieniu.ObrótY(c, s); }