コード例 #1
0
 public static void Negative(this IMatrixImage image)
 {
     using (image.SupressUpdating())              // Подавление обновлений при редактировании слоев
     {
         foreach (var item in image.Split(false)) // Для каждого слоя без копирования
         {
             item.Sub(256, false);                // Вычитание каждого пикселя (256 - значение пикселя)
         }
     }
 }
コード例 #2
0
        public override IMatrixImage Invoke(IMatrixImage input)
        {
            var layers = input.Split(false);

            if (layers.Length == 1)
            {
                return(input);
            }
            else
            {
                return(input.CreateSingleGray().CreateImage());
            }
        }
コード例 #3
0
ファイル: BitmapHandler.cs プロジェクト: GerFern/ImageProject
 public BitmapHandler(IMatrixImage matrixImage)
     : base(matrixImage)
 {
     MatrixLayer <byte>[] layers = matrixImage.Split(false).Select(a => a.ToByteLayer(false)).ToArray();
     if (layers.Length == 1)
     {
         // GrayScale
         Bitmap = new Bitmap(matrixImage.Width, matrixImage.Height, PixelFormat.Format8bppIndexed);
         ColorPalette palette = Bitmap.Palette;
         Color[]      ent     = palette.Entries;
         for (int i = 0; i < 256; i++)
         {
             ent[i] = Color.FromArgb(i, i, i); // Настроить для Bitmap только цвета с оттенками серого
         }
         Bitmap.Palette = palette;
         Bitmap.FillGrayBitmap(layers[0]);
         matrixImage.Updated += (_, upd) => Bitmap.FillGrayBitmap(upd.Image.Split(false)[0]);
     }
     else if (layers.Length == 3)
     {
         // Bgr
         Bitmap = new Bitmap(matrixImage.Width, matrixImage.Height, PixelFormat.Format24bppRgb);
         Bitmap.FillBgrBitmap(matrixImage.Split(false));
         matrixImage.Updated += (_, upd) => Bitmap.FillBgrBitmap(upd.Image.Split(false));
     }
     else if (layers.Length == 4)
     {
         // Bgra
         Bitmap = new Bitmap(matrixImage.Width, matrixImage.Height, PixelFormat.Format32bppPArgb);
         Bitmap.FillBgraBitmap(matrixImage.Split(false));
         matrixImage.Updated += (_, upd) => Bitmap.FillBgraBitmap(upd.Image.Split(false));
     }
     else
     {
         throw new NotSupportedException();
     }
     PartialCtor(matrixImage, layers);
 }
コード例 #4
0
 public static bool GetRemoveAlpha(this IMatrixImage image, out IMatrixImage?retImage)
 {
     if (image.LayerCount == 4)
     {
         IMatrixLayer[] layers = image.Split(false);
         retImage = MatrixImageBuilder.CreateImage(layers, true);
         return(true);
     }
     else
     {
         retImage = null;
         return(false);
     }
 }
コード例 #5
0
 public static void FillBitmap(this Bitmap bitmap, IMatrixImage image)
 {
     bitmap.FillBitmap(image.Split(false));
 }