Esempio n. 1
0
        //--------------------------------------------------------------------------------------
        /// <summary>
        /// разбиение рисунка на части - по одной для каждого цвета
        /// </summary>
        /// <param name="pPicture">входной рисунок для разбиения</param>
        /// <returns>выходной список рисунков - в каждом только один цвет</returns>
        public Dictionary <Color, Bitmap> SplitImageByColor(Bitmap pPicture)
        {
            Dictionary <Color, Bitmap> lOutList = new Dictionary <Color, Bitmap>();

            for (int i = 0; i < pPicture.Width; i++)
            {
                for (int j = 0; j < pPicture.Height; j++)
                {
                    Color lColor = pPicture.GetPixel(i, j);
                    if (!lOutList.ContainsKey(lColor))
                    {
                        Color  lBackColor  = CImageSplitter.DefineBestBackColor(lColor);
                        Bitmap lNewPicture = new Bitmap(pPicture.Width, pPicture.Height);
                        lOutList.Add(lColor, lNewPicture);
                        for (int l = 0; l < lNewPicture.Width; l++)
                        {
                            for (int k = 0; k < lNewPicture.Height; k++)
                            {
                                lNewPicture.SetPixel(l, k, lBackColor);
                            }
                        }
                    }
                    lOutList[lColor].SetPixel(i, j, lColor);
                }
            }
            return(lOutList);
        }
Esempio n. 2
0
        //--------------------------------------------------------------------------------------
        public FBordersByColorForImage(Image pImage)
        {
            InitializeComponent();

            fSourceBitmap = pImage as Bitmap;
            if (fSourceBitmap != null)
            {
                pbSourceImage.Image = fSourceBitmap;
            }

            fBlackWhiteExplorer = new CBlackWhiteExplorer();

            Color[] lFinalColors = CBlackWhiteExplorer.DefineExactNeedColor(8);
            fColorsOfVariant = new Color[8];
            fTextOfColors    = new string[8];
            for (int i = 0; i < 6; i++)
            {
                fColorsOfVariant[i + 1] = lFinalColors[i];
            }
            fColorsOfVariant[0] = Color.FromArgb(255, 0, 0, 0);
            fColorsOfVariant[7] = Color.FromArgb(255, 255, 255, 255);
            for (int i = 0; i < fTextOfColors.Length; i++)
            {
                fTextOfColors[i] = fColorsOfVariant[i].R.ToString() + ":" +
                                   fColorsOfVariant[i].G.ToString() + ":" + fColorsOfVariant[i].B.ToString();
            }
            l000.Text              += "   (" + fTextOfColors[0] + ")";
            l001.Text              += "   (" + fTextOfColors[1] + ")";
            l010.Text              += "   (" + fTextOfColors[2] + ")";
            l011.Text              += "   (" + fTextOfColors[3] + ")";
            l100.Text              += "   (" + fTextOfColors[4] + ")";
            l101.Text              += "   (" + fTextOfColors[5] + ")";
            l110.Text              += "   (" + fTextOfColors[6] + ")";
            l111.Text              += "   (" + fTextOfColors[7] + ")";
            l000.BackColor          = fColorsOfVariant[0];
            l001.BackColor          = fColorsOfVariant[1];
            l010.BackColor          = fColorsOfVariant[2];
            l011.BackColor          = fColorsOfVariant[3];
            l100.BackColor          = fColorsOfVariant[4];
            l101.BackColor          = fColorsOfVariant[5];
            l110.BackColor          = fColorsOfVariant[6];
            l111.BackColor          = fColorsOfVariant[7];
            l000.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[0]);
            l001.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[1]);
            l010.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[2]);
            l011.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[3]);
            l100.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[4]);
            l101.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[5]);
            l110.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[6]);
            l111.ForeColor          = CImageSplitter.DefineBestBackColor(fColorsOfVariant[7]);
            fBordersByColorForImage = new CBordersByColorForImage(fSourceBitmap);
        }