/// <summary> /// コンストラクタ /// </summary> /// <param name="c">メディアンカットオブジェクト</param> public DrawingImage(MedianCut c) { Converter = c; SelectedPallet = 2; IsDrawBorder = true; HighLightColor = C_HIGHLIGHT; }
/// <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++; } }