//============================================================ // <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)); } } }
//============================================================ // <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); }