/// <summary>
 /// コンストラクタ
 /// </summary>
 /// <param name="c">メディアンカットオブジェクト</param>
 public DrawingImage(MedianCut c)
 {
     Converter      = c;
     SelectedPallet = 2;
     IsDrawBorder   = true;
     HighLightColor = C_HIGHLIGHT;
 }
Beispiel #2
0
        /// <summary>
        /// 表示用画像作成
        /// </summary>
        /// <param name="imgOrg">変換前画像データ</param>
        /// <returns></returns>
        private void MakeDrawingImage(Image imgOrg)
        {
            // 画像の正方形化(32x32)
            int    w         = IMAGE_WIDTH;
            int    h         = IMAGE_HEIGHT;
            Bitmap bmpMosaic = new Bitmap(w, h);

            using (Graphics g = Graphics.FromImage(bmpMosaic))
            {
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.DrawImage(imgOrg, 0, 0, w, h);
            }

            // 画像メディアンカットによる減色(15色)
            Converter = new MedianCut(bmpMosaic, COLOR_MAX);
            Converter.Run(HSTEP_COUNT, SSTEP_COUNT, BSTEP_COUNT);

            // 表示用画像用オブジェクトを生成
            Drawer = new DrawingImage(Converter);

            // 画面にパレットを表示
            int i = 0;

            foreach (var cb in CheckBoxPallets)
            {
                // チェックボタンの背景色を設定
                if (i < Converter.Cubes.Count)
                {
                    cb.BackColor = Converter.Cubes[i].RepColor;
                }
                else
                {
                    cb.BackColor = Color.White;
                }

                // チェックをOFFにする
                cb.CheckState = CheckState.Unchecked;
                i++;
            }
        }