예제 #1
0
파일: Master.cs 프로젝트: scnerd/Picasso
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public Image Render(RenderState State = RenderState.FullOverlay)
        {
            Image Img = null;
            Graphics g;
            switch (State)
            {
                case RenderState.Original:
                    Img = (Image)mBaseImage.Clone();
                    break;

                case RenderState.FullOverlay:
                    Img = (Image)mBaseImage.Clone();
                    g = Graphics.FromImage(Img);
                    foreach (Child c in mChildren)
                        c.Draw(g);
                    g.Dispose();
                    break;

                case RenderState.Base1Shapes:
                    Img = new Bitmap(mBaseImage.Width, mBaseImage.Height);
                    g = Graphics.FromImage(Img);
                    foreach (Child c in mChildren)
                        c.Draw(g);
                    g.Dispose();
                    break;

                case RenderState.Negative:
                    Img = (Image)mLeftover.Clone();
                    break;

                case RenderState.EditOrig:
                    ImgManip Man = new ImgManip(ref mBaseImage);
                    Man.ReduceColors(mColorDetail);
                    Man.ReduceGrid(mResDetail);
                    Img = Man.GetImage;
                    break;
            }
            return Img;
        }
예제 #2
0
파일: Master.cs 프로젝트: scnerd/Picasso
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Count"></param>
        public void GenerateChildren()
        {
            //int Count = 0;
            #if GUIOUTPUT
            double Prog = 0d;
            ProgressDisplay Disp = new ProgressDisplay();
            System.Threading.Tasks.Task t = new System.Threading.Tasks.Task(new Action(Disp.Show));
            t.Start();
            #endif
            //Reduce the image into simplicity
            mLeftover = (Bitmap)mBaseImage.Clone();
            ImgManip Man = new ImgManip(ref mLeftover);
            Man.ReduceColors(mColorDetail);
            mScale = Man.ReduceGrid(mResDetail);
            mLeftover = Man.GetImage;
            Bitmap Clear = new Bitmap(mLeftover.Width, mLeftover.Height);
            Graphics.FromImage(Clear).Clear(Constants.ALPHA_FULL);
            ImageSection Img = new ImageSection(new Point(0, 0), mLeftover, Clear, Color.Empty);

            mChildren = Child.ScanImageSection(Img, mColorForgive, mColorDetail, mMinMargin);
            #if GUIOUTPUT
            Prog = 0.5d;
            #endif
            //Count += mChildren.Length;
            double Scale;
            foreach (Child c in mChildren)
            {
                Scale = Constants.GetScale(((ImageSection)c).Size, this.Size);
                c.GenerateSubChildren((int)(Scale * mColorForgive), (int)(Scale * mColorDetail), mMinMargin);
            #if GUIOUTPUT
                Prog += 1d / (double)mChildren.Count() * 0.5d;
            #endif
            }
            #if GUIOUTPUT
            Disp.Close();
            Disp.Dispose();
            t.Dispose();
            #endif
        }