-
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
package haxework.gui.utils;
|
package haxework.gui.utils;
|
||||||
|
|
||||||
|
import flash.display.Bitmap;
|
||||||
|
import flash.Lib;
|
||||||
|
import flash.geom.Point;
|
||||||
import flash.geom.Matrix;
|
import flash.geom.Matrix;
|
||||||
import flash.geom.Rectangle;
|
import flash.geom.Rectangle;
|
||||||
import flash.display.BitmapData;
|
import flash.display.BitmapData;
|
||||||
@@ -12,6 +15,7 @@ import flash.display.Graphics;
|
|||||||
CONTAIN;
|
CONTAIN;
|
||||||
REPEAT;
|
REPEAT;
|
||||||
STRETCH;
|
STRETCH;
|
||||||
|
NINEPATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
class DrawUtil {
|
class DrawUtil {
|
||||||
@@ -38,6 +42,9 @@ class DrawUtil {
|
|||||||
graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
|
graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
|
||||||
graphics.endFill();
|
graphics.endFill();
|
||||||
return;
|
return;
|
||||||
|
case FillType.NINEPATH:
|
||||||
|
draw9path(graphics, image, rect);
|
||||||
|
return;
|
||||||
case FillType.DEFAULT:
|
case FillType.DEFAULT:
|
||||||
case FillType.CONTAIN:
|
case FillType.CONTAIN:
|
||||||
sx = sy = Math.min(rect.width / image.width, rect.height / image.height);
|
sx = sy = Math.min(rect.width / image.width, rect.height / image.height);
|
||||||
@@ -59,4 +66,64 @@ class DrawUtil {
|
|||||||
graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
|
graphics.drawRect(rect.x, rect.y, rect.width, rect.height);
|
||||||
graphics.endFill();
|
graphics.endFill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function draw9path(graphics:Graphics, image:BitmapData, rect:Rectangle):Void {
|
||||||
|
var w:Int = Math.round(image.width / 2);
|
||||||
|
var h:Int = Math.round(image.height / 2);
|
||||||
|
var m:Matrix = null;
|
||||||
|
//lt
|
||||||
|
graphics.beginBitmapFill(image, m, false);
|
||||||
|
graphics.drawRect(0, 0, w, h);
|
||||||
|
graphics.endFill();
|
||||||
|
//rt
|
||||||
|
m = new Matrix();
|
||||||
|
m.translate(rect.width - 2 * w, 0);
|
||||||
|
graphics.beginBitmapFill(image, m, false);
|
||||||
|
graphics.drawRect(rect.width - w, 0, w, h);
|
||||||
|
graphics.endFill();
|
||||||
|
//lb
|
||||||
|
m = new Matrix();
|
||||||
|
m.translate(0, rect.height - 2 * h);
|
||||||
|
graphics.beginBitmapFill(image, m, false);
|
||||||
|
graphics.drawRect(0, rect.height - h, w, h);
|
||||||
|
graphics.endFill();
|
||||||
|
//rb
|
||||||
|
m = new Matrix();
|
||||||
|
m.translate(rect.width - 2 * w, rect.height - 2 * h);
|
||||||
|
graphics.beginBitmapFill(image, m, false);
|
||||||
|
graphics.drawRect(rect.width - w, rect.height - h, w, h);
|
||||||
|
graphics.endFill();
|
||||||
|
//c
|
||||||
|
graphics.beginFill(image.getPixel(w, h));
|
||||||
|
graphics.drawRect(w - 1, h - 1, rect.width - 2 * w + 2, rect.height - 2 * h + 2);
|
||||||
|
graphics.endFill();
|
||||||
|
//t
|
||||||
|
var t:BitmapData = new BitmapData(1, h);
|
||||||
|
t.copyPixels(image, new Rectangle(w, 0, 1, h), new Point(0, 0));
|
||||||
|
graphics.beginBitmapFill(t, null, true);
|
||||||
|
graphics.drawRect(w, 0, rect.width - w * 2, h);
|
||||||
|
graphics.endFill();
|
||||||
|
//b
|
||||||
|
var b:BitmapData = new BitmapData(1, h);
|
||||||
|
b.copyPixels(image, new Rectangle(w, h, 1, h), new Point(0, 0));
|
||||||
|
m = new Matrix();
|
||||||
|
m.translate(0, rect.height - h);
|
||||||
|
graphics.beginBitmapFill(b, m, true);
|
||||||
|
graphics.drawRect(w, rect.height - h, rect.width - w * 2, h - 2); //ToDo:?
|
||||||
|
graphics.endFill();
|
||||||
|
//l
|
||||||
|
var l:BitmapData = new BitmapData(w, 1);
|
||||||
|
l.copyPixels(image, new Rectangle(0, h, w, 1), new Point(0, 0));
|
||||||
|
graphics.beginBitmapFill(l, null, true);
|
||||||
|
graphics.drawRect(0, h, w, rect.height - h * 2);
|
||||||
|
graphics.endFill();
|
||||||
|
//r
|
||||||
|
var r:BitmapData = new BitmapData(w, 1);
|
||||||
|
r.copyPixels(image, new Rectangle(w, h, w, 1), new Point(0, 0));
|
||||||
|
m = new Matrix();
|
||||||
|
m.translate(rect.width - w, 0);
|
||||||
|
graphics.beginBitmapFill(r, m, true);
|
||||||
|
graphics.drawRect(rect.width - w, h, w, rect.height - h * 2);
|
||||||
|
graphics.endFill();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user