コード例 #1
0
ファイル: Win32Bitmap.cs プロジェクト: jakesays/Glide
 public override void DrawImage(int xDst, int yDst, Bitmap bitmap, int xSrc, int ySrc, 
     int width, int height, ushort opacity)
 {
     var srcRect = new Sd.RectangleF(xSrc, ySrc, width, height);
     var dstRect = new Sd.RectangleF(xDst, yDst, width, height);
     Context.DrawImage(((Win32Bitmap) bitmap).NativeBitmap, dstRect, srcRect, Sd.GraphicsUnit.Pixel);
 }
コード例 #2
0
ファイル: Win32Bitmap.cs プロジェクト: jakesays/Glide
 public override void TileImage(int xDst, int yDst, Bitmap bitmap, int width, int height, ushort opacity)
 {
 }
コード例 #3
0
ファイル: Win32Bitmap.cs プロジェクト: jakesays/Glide
        public override void Scale9Image(int xDst, int yDst, int widthDst, int heightDst,
            Bitmap bitmap, int leftBorder, int topBorder,
            int rightBorder, int bottomBorder, ushort opacity)
        {
            var srcBitmap = ((Win32Bitmap) bitmap).NativeBitmap;
            int widthSrc = srcBitmap.Width;
            int heightSrc = srcBitmap.Height;

            if (widthDst >= leftBorder &&
                heightDst >= topBorder)
            {
                int centerWidthSrc = widthSrc - (leftBorder + rightBorder);
                int centerHeightSrc = heightSrc - (topBorder + bottomBorder);
                int centerWidthDst = widthDst - (leftBorder + rightBorder);
                int centerHeightDst = heightDst - (topBorder + bottomBorder);

                //top-left

                //dst.left = xDst;
                //dst.top = yDst;
                //dst.right = dst.left + leftBorder - 1;
                //dst.bottom = dst.top + topBorder - 1;
                //src.left = 0;
                //src.top = 0;
                //src.right = src.left + leftBorder - 1;
                //src.bottom = src.top + topBorder - 1;

                var dst = new Sd.Rectangle(xDst, yDst, leftBorder, topBorder);
                var src = new Sd.Rectangle(0, 0, leftBorder, topBorder);
                Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);

                //top-right
                if (widthDst > leftBorder)
                {
                    //dst.left = xDst + widthDst - rightBorder;
                    //dst.top = yDst;
                    //dst.right = dst.left + rightBorder - 1;
                    //dst.bottom = dst.top + topBorder - 1;
                    //src.left = widthSrc - rightBorder;
                    //src.top = 0;
                    //src.right = src.left + rightBorder - 1;
                    //src.bottom = src.top + topBorder - 1;

                    dst = new Sd.Rectangle(xDst + widthDst - rightBorder, yDst, rightBorder, topBorder);
                    src = new Sd.Rectangle(widthSrc - rightBorder, 0, rightBorder, topBorder);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //bottom-left
                if (heightDst > topBorder)
                {
                    //dst.left = xDst;
                    //dst.top = yDst + heightDst - bottomBorder;
                    //dst.right = dst.left + leftBorder - 1;
                    //dst.bottom = dst.top + bottomBorder - 1;
                    //src.left = 0;
                    //src.top = heightSrc - bottomBorder;
                    //src.right = src.left + leftBorder - 1;
                    //src.bottom = src.top + bottomBorder - 1;

                    dst = new Sd.Rectangle(xDst, yDst + heightDst - bottomBorder, leftBorder, bottomBorder);
                    src = new Sd.Rectangle(0, heightSrc - bottomBorder, leftBorder, bottomBorder);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //bottom-right
                if (widthDst > leftBorder &&
                    heightDst > topBorder)
                {
                    //dst.left = xDst + widthDst - rightBorder;
                    //dst.top = yDst + heightDst - bottomBorder;
                    //dst.right = dst.left + rightBorder - 1;
                    //dst.bottom = dst.top + bottomBorder - 1;
                    //src.left = widthSrc - rightBorder;
                    //src.top = heightSrc - bottomBorder;
                    //src.right = src.left + rightBorder - 1;
                    //src.bottom = src.top + bottomBorder - 1;

                    dst = new Sd.Rectangle(xDst + widthDst - rightBorder, yDst + heightDst - bottomBorder,
                        rightBorder, bottomBorder);
                    src = new Sd.Rectangle(widthSrc - rightBorder, heightSrc - bottomBorder,
                        rightBorder, bottomBorder);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //left
                if (centerHeightDst > 0)
                {
                    //dst.left = xDst;
                    //dst.top = yDst + topBorder;
                    //dst.right = dst.left + leftBorder - 1;
                    //dst.bottom = dst.top + centerHeightDst - 1;
                    //src.left = 0;
                    //src.top = topBorder;
                    //src.right = src.left + leftBorder - 1;
                    //src.bottom = src.top + centerHeightSrc - 1;

                    dst = new Sd.Rectangle(xDst, yDst + topBorder, leftBorder, centerHeightDst);
                    src = new Sd.Rectangle(0, topBorder, leftBorder, centerHeightSrc);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //top
                if (centerWidthDst > 0)
                {
                    //dst.left = xDst + leftBorder;
                    //dst.top = yDst;
                    //dst.right = dst.left + centerWidthDst - 1;
                    //dst.bottom = dst.top + topBorder - 1;
                    //src.left = leftBorder;
                    //src.top = 0;
                    //src.right = src.left + centerWidthSrc - 1;
                    //src.bottom = src.top + topBorder - 1;

                    dst = new Sd.Rectangle(xDst + leftBorder, yDst, centerWidthDst, topBorder);
                    src = new Sd.Rectangle(leftBorder, 0, centerWidthSrc, topBorder);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //right
                if (widthDst > leftBorder &&
                    centerHeightDst > 0)
                {
                    //dst.left = xDst + widthDst - rightBorder;
                    //dst.top = yDst + topBorder;
                    //dst.right = dst.left + rightBorder - 1;
                    //dst.bottom = dst.top + centerHeightDst - 1;
                    //src.left = widthSrc - rightBorder;
                    //src.top = topBorder;
                    //src.right = src.left + rightBorder - 1;
                    //src.bottom = src.top + centerHeightSrc - 1;

                    dst = new Sd.Rectangle(xDst + widthDst - rightBorder, yDst + topBorder,
                        rightBorder, centerHeightDst);
                    src = new Sd.Rectangle(widthSrc - rightBorder, topBorder,
                        rightBorder, centerHeightSrc);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //bottom
                if (centerWidthDst > 0 && heightDst > topBorder)
                {
                    //dst.left = xDst + leftBorder;
                    //dst.top = yDst + heightDst - bottomBorder;
                    //dst.right = dst.left + centerWidthDst - 1;
                    //dst.bottom = dst.top + bottomBorder - 1;
                    //src.left = leftBorder;
                    //src.top = heightSrc - bottomBorder;
                    //src.right = src.left + centerWidthSrc - 1;
                    //src.bottom = src.top + bottomBorder - 1;

                    dst = new Sd.Rectangle(xDst + leftBorder, yDst + heightDst - bottomBorder,
                        centerWidthDst, bottomBorder);
                    src = new Sd.Rectangle(leftBorder, heightSrc - bottomBorder,
                        centerWidthSrc, bottomBorder);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }

                //center
                if (centerWidthDst > 0 && centerHeightDst > 0)
                {
                    //dst.left = xDst + leftBorder;
                    //dst.top = yDst + topBorder;
                    //dst.right = dst.left + centerWidthDst - 1;
                    //dst.bottom = dst.top + centerHeightDst - 1;
                    //src.left = leftBorder;
                    //src.top = topBorder;
                    //src.right = src.left + centerWidthSrc - 1;
                    //src.bottom = src.top + centerHeightSrc - 1;

                    dst = new Sd.Rectangle(xDst + leftBorder, yDst + topBorder,
                        centerWidthDst, centerHeightDst);
                    src = new Sd.Rectangle(leftBorder, topBorder,
                        centerWidthSrc, centerHeightSrc);
                    Context.DrawImage(srcBitmap, dst, src, Sd.GraphicsUnit.Pixel);
                }
            }
        }
コード例 #4
0
ファイル: Win32Bitmap.cs プロジェクト: jakesays/Glide
 public override void StretchImage(int xDst, int yDst, int widthDst, int heightDst, Bitmap bitmap, int xSrc, int ySrc, int widthSrc,
     int heightSrc, ushort opacity)
 {
 }
コード例 #5
0
ファイル: Win32Bitmap.cs プロジェクト: jakesays/Glide
 public override void RotateImage(int angle, int xDst, int yDst, Bitmap bitmap, int xSrc, int ySrc, int width, int height, ushort opacity)
 {
 }