Exemplo n.º 1
0
        public void SetPosColor(EPoint pos, Color clr)
        {
            Graphics   g   = Graphics.FromImage(this.m_bmp);
            ERectangle rct = new ERectangle(pos.X, pos.Y, 1, 1) * this.SquareSide;

            g.FillRectangle(new SolidBrush(clr), rct.ToRectangle());
        }
Exemplo n.º 2
0
        public static void SplitImage(Document psd, int layerIndex, string outputFilePrefix)
        {
            ImageResources.GridGuidesInfo guidesInfo = (ImageResources.GridGuidesInfo)psd.GetResource(typeof(ImageResources.GridGuidesInfo));

            List <int> vertical = new List <int>();
            List <ImageResources.GridGuidesInfo.GridGuide> guides = guidesInfo.GetGuidesByAlignment(false);

            foreach (ImageResources.GridGuidesInfo.GridGuide gg in guides)
            {
                vertical.Add((int)gg.LocationInPixels);
            }
            vertical.Add((int)psd.Header.Rows);

            List <int> horizontal = new List <int>();

            guides = guidesInfo.GetGuidesByAlignment(true);
            foreach (ImageResources.GridGuidesInfo.GridGuide gg in guides)
            {
                horizontal.Add((int)gg.LocationInPixels);
            }
            horizontal.Add((int)psd.Header.Columns);

            Bitmap bmp   = psd.Layers[layerIndex].Bitmap;
            int    lastX = 0;
            int    cnt   = 0;

            foreach (int x in horizontal)
            {
                int lastY = 0;
                foreach (int y in vertical)
                {
                    ERectangle rct    = ERectangle.FromLTRB(lastX, lastY, x, y);
                    Bitmap     bmpNew = new Bitmap(rct.Width, rct.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
                    Graphics   g      = Graphics.FromImage(bmpNew);
                    g.DrawImage(bmp, new Rectangle(0, 0, rct.Width, rct.Height), rct.ToRectangle(), GraphicsUnit.Pixel);
                    g.Dispose();

                    //TODO: examine bitmap and see if it can be reduced (e.g. middle parts are probably the same)

                    Endogine.BitmapHelpers.BitmapHelper.Save(bmpNew, outputFilePrefix + "_slice" + cnt + ".png");
                    cnt++;
                    lastY = y;
                }
                lastX = x;
            }
        }
Exemplo n.º 3
0
        public override void SubDraw()
        {
            ERectangleF rctDraw = _sp.CalcRectInDrawTarget();

            //attribs.SetColorMatrix(new ColorMatrix(), ColorMatrixFlag.Default, ColorAdjustType.Bitmap);


            if (_sp.Ink == RasterOps.ROPs.Copy || _sp.Ink == RasterOps.ROPs.BgTransparent || _sp.DrawToSprite == null)             //TODO: allow RasterOps on root sprite.
            //if (false)
            {
                if (_sp.Rect.Width <= 0 || _sp.Rect.Height <= 0)
                {
                    return;
                }

                PointF   ulCorner1 = new PointF(rctDraw.X, rctDraw.Y);
                PointF   urCorner1 = new PointF(rctDraw.OppositeX, rctDraw.Y);
                PointF   llCorner1 = new PointF(rctDraw.X, rctDraw.OppositeY);
                PointF[] destPara1 = { ulCorner1, urCorner1, llCorner1 };

                ERectangle rctSrc = _sp.SourceRect;                 //m_sp.Member.GetRectForFrame(m_sp.MemberAnimationFrame);
                //RectangleF rctfCropped = m_sp.GetPortionOfMemberToDisplay();

                //g.FillRectangle(new SolidBrush(Color.Red), rctDraw);

                Graphics        g       = Graphics.FromImage(_sp.DrawToSprite.Member.Bitmap);
                ImageAttributes attribs = new ImageAttributes();
                attribs.SetWrapMode(WrapMode.Tile);
                if (_sp.Ink == RasterOps.ROPs.BgTransparent)
                {
                    attribs.SetColorKey(_sp.Member.ColorKey, _sp.Member.ColorKey);
                }

                g.SmoothingMode      = SmoothingMode.None;
                g.CompositingMode    = CompositingMode.SourceOver;
                g.CompositingQuality = CompositingQuality.Invalid;
                g.DrawImage(_sp.Member.Bitmap, destPara1, rctSrc.ToRectangleF(), GraphicsUnit.Pixel, attribs);
                g.Dispose();
            }
            else
            {
                //since it's difficult to write a RasterOp algorithm that both does effects and scales/interpolates properly,
                //I cheat by creating a temporary scaled bitmap
                if (_sp.Rect.ToERectangle().Width <= 0 || _sp.Rect.ToERectangle().Height <= 0)
                {
                    return;
                }

                Bitmap     bmp    = _sp.Member.Bitmap;
                ERectangle rctSrc = _sp.SourceRect;
                if (_sp.Scaling.X != 1 || _sp.Scaling.Y != 1 || _sp.Color != Color.White)
                {
                    //TODO: other/faster resizing algorithms at
                    //http://www.codeproject.com/csharp/ImgResizOutperfGDIPlus.asp
                    rctSrc = _sp.Rect.ToERectangle();
                    rctSrc.Offset(-rctSrc.X, -rctSrc.Y);
                    bmp = new Bitmap(_sp.Rect.ToERectangle().Width, _sp.Rect.ToERectangle().Height, _sp.Member.Bitmap.PixelFormat);                     //m_sp.Member.Bitmap, new Size(m_sp.RectInt.Width, m_sp.RectInt.Height));
                    Graphics        g       = Graphics.FromImage(bmp);
                    ImageAttributes attribs = new ImageAttributes();

                    ColorMatrix colorMatrix = new ColorMatrix();
                    colorMatrix.Matrix00 = (float)_sp.Color.R / 255;
                    colorMatrix.Matrix11 = (float)_sp.Color.G / 255;
                    colorMatrix.Matrix22 = (float)_sp.Color.B / 255;
                    colorMatrix.Matrix33 = 1.00f;                     // alpha
                    colorMatrix.Matrix44 = 1.00f;                     // w
                    attribs.SetColorMatrix(colorMatrix);

                    g.DrawImage(_sp.Member.Bitmap, rctSrc.ToRectangle(),
                                _sp.SourceRect.X, _sp.SourceRect.Y, _sp.SourceRect.Width, _sp.SourceRect.Height,
                                GraphicsUnit.Pixel, attribs);
                    g.Dispose();
                }

                RasterOps.CopyPixels(_sp.DrawToSprite.Member.Bitmap, bmp,
                                     rctDraw, rctSrc, _sp.DrawToSprite.SourceRect, (int)_sp.Ink, _sp.Blend);
            }
        }