Beispiel #1
0
        //============================================================
        // <T>绘制边界位图。</T>
        //
        // @param bitmap 位图
        // @param bitmapRectangle 位图范围
        // @param x 横坐标
        // @param y 纵坐标
        // @param width 宽度
        // @param height 高度
        // @param padding 空格
        //============================================================
        public void DrawBitmapPadding(FDxBitmap bitmap, SIntRectangle bitmapRectangle, int x, int y, int width, int height, SIntPadding padding, float scale = 1.0f)
        {
            // 计算缩放
            int paddingLeft   = padding.Left;
            int paddingTop    = padding.Top;
            int paddingRight  = padding.Right;
            int paddingBottom = padding.Bottom;

            width  -= x;
            height -= y;
            if (scale != 1.0f)
            {
                x             = (int)(x * scale);
                y             = (int)(y * scale);
                width         = (int)(width * scale);
                height        = (int)(height * scale);
                paddingLeft   = (int)(paddingLeft * scale);
                paddingTop    = (int)(paddingTop * scale);
                paddingRight  = (int)(paddingRight * scale);
                paddingBottom = (int)(paddingBottom * scale);
            }
            // 绘制对象
            int[] sxs = null;
            int[] sys = null;
            if (bitmapRectangle != null)
            {
                sxs = new int[4] {
                    bitmapRectangle.Left, bitmapRectangle.Left + paddingLeft, bitmapRectangle.Right - paddingRight, bitmapRectangle.Right
                };
                sys = new int[4] {
                    bitmapRectangle.Top, bitmapRectangle.Top + paddingTop, bitmapRectangle.Bottom - paddingBottom, bitmapRectangle.Bottom
                };
            }
            else
            {
                sxs = new int[4] {
                    0, paddingLeft, bitmap.Size.Width - paddingRight, bitmap.Size.Width
                };
                sys = new int[4] {
                    0, paddingTop, bitmap.Size.Height - paddingBottom, bitmap.Size.Height
                };
            }
            int[] dxs = new int[4] {
                0, paddingLeft, width - paddingRight, width
            };
            int[] dys = new int[4] {
                0, paddingTop, height - paddingBottom, height
            };
            for (int ny = 0; ny < 3; ny++)
            {
                for (int nx = 0; nx < 3; nx++)
                {
                    int n = 3 * ny + nx;
                    // 计算来源信息
                    int sx = sxs[nx];
                    int sw = sxs[nx + 1] - sx;
                    if (sw <= 0)
                    {
                        continue;
                    }
                    int sy = sys[ny];
                    int sh = sys[ny + 1] - sy;
                    if (sh <= 0)
                    {
                        continue;
                    }
                    // 计算目标信息
                    int dx = dxs[nx];
                    int dw = dxs[nx + 1] - dx;
                    if (dw <= 0)
                    {
                        continue;
                    }
                    int dy = dys[ny];
                    int dh = dys[ny + 1] - dy;
                    if (dh <= 0)
                    {
                        continue;
                    }
                    // 绘制图片
                    _target.DrawBitmap(bitmap.Native, new Rectangle(x + dx, y + dy, dw, dh), 1.0f, InterpolationMode.Linear, new Rectangle(sx, sy, sw, sh));
                }
            }
        }
Beispiel #2
0
 //============================================================
 // <T>绘制边界位图。</T>
 //
 // @param bitmap 位图
 // @param x 横坐标
 // @param y 纵坐标
 // @param width 宽度
 // @param height 高度
 // @param padding 空格
 //============================================================
 public void DrawBitmapPadding(FDxBitmap bitmap, int x, int y, int width, int height, SIntPadding padding, float scale = 1.0f)
 {
     DrawBitmapPadding(bitmap, null, x, y, width, height, padding, scale);
 }