public static Polygon MakePolygon(LImage image) { if (image == null) { throw new RuntimeException("Image is null !"); } return MakePolygon(image.GetIntPixels(), image.GetWidth(), image.GetHeight()); }
public static LImage GetResize(LImage image, int w, int h) { if (image == null) { return null; } if (image.width == w && image.height == h) { return image; } LImage result = LImage.CreateImage(w, h, image.HasAlpha()); LGraphics g = result.GetLGraphics(); g.DrawImage(image, 0, 0, w, h, 0, 0, image.GetWidth(), image.GetHeight()); g.Dispose(); return result; }
public static LImage GetResize(LImage image, int w, int h) { if (image == null) { return(null); } if (image.width == w && image.height == h) { return(image); } LImage result = LImage.CreateImage(w, h, image.HasAlpha()); LGraphics g = result.GetLGraphics(); g.DrawImage(image, 0, 0, w, h, 0, 0, image.GetWidth(), image.GetHeight()); g.Dispose(); return(result); }
/// <summary> /// 判定指定的两张图片之间是否产生了碰撞 /// </summary> /// /// <param name="src"></param> /// <param name="x1"></param> /// <param name="y1"></param> /// <param name="dest"></param> /// <param name="x2"></param> /// <param name="y2"></param> /// <returns></returns> public bool isPixelCollide(LImage src, float x1, float y1, LImage dest, float x2, float y2) { float width1 = x1 + src.GetWidth() - 1, height1 = y1 + src.GetHeight() - 1, width2 = x2 + dest.GetWidth() - 1, height2 = y2 + dest.GetHeight() - 1; int xstart = (int)Loon.Utils.MathUtils.Max(x1, x2), ystart = (int)Loon.Utils.MathUtils.Max(y1, y2), xend = (int)Loon.Utils.MathUtils.Min(width1, width2), yend = (int)Loon.Utils.MathUtils.Min(height1, height2); int toty = Loon.Utils.MathUtils.Abs(yend - ystart); int totx = Loon.Utils.MathUtils.Abs(xend - xstart); for (int y = 1; y < toty - 1; y++) { int ny = Loon.Utils.MathUtils.Abs(ystart - (int)y1) + y; int ny1 = Loon.Utils.MathUtils.Abs(ystart - (int)y2) + y; for (int x = 1; x < totx - 1; x++) { int nx = Loon.Utils.MathUtils.Abs(xstart - (int)x1) + x; int nx1 = Loon.Utils.MathUtils.Abs(xstart - (int)x2) + x; try { if (((src.GetPixel(nx, ny).PackedValue != LSystem.TRANSPARENT)) && ((dest.GetPixel(nx1, ny1).PackedValue != LSystem.TRANSPARENT))) { return true; } } catch (Exception e) { Loon.Utils.Debugging.Log.Exception(e); } } } return false; }
public PShadowEffect(LImage img, LImage back, int x, int y, int w, int h) { if (deasilTrans == null || widdershinTrans == null) { deasilTrans = new Color[max_pixel]; for (int i = 0; i < max_pixel; i++) { deasilTrans[i] = new Color(i, i, i); } int count = 0; widdershinTrans = new Color[max_pixel]; for (int i = 0; i < max_pixel; i++) { widdershinTrans[count++] = deasilTrans[i]; } } this.SetLocation(x, y); this.width = w; this.height = h; this.visible = true; LImage temp = null; if (back == null) { this.scaleWidth = width / 2; this.scaleHeight = height / 2; temp = GraphicsUtils.GetResize(img, scaleWidth, scaleHeight); this.image = LImage.CreateImage(scaleWidth, scaleHeight, true); this.finalDrawPixels = temp.GetPixels(); this.nowDrawPixels = (Color[])CollectionUtils.CopyOf(finalDrawPixels); if (temp != null) { temp.Dispose(); temp = null; } } else { this.scaleWidth = width / 2; this.scaleHeight = height / 2; temp = GraphicsUtils.GetResize(img, scaleWidth, scaleHeight); this.image = LImage.CreateImage(scaleWidth, scaleHeight, true); if (back.GetWidth() == scaleWidth && back.GetHeight() == scaleHeight) { this.finalBackgroundPixels = back.GetPixels(); this.backgroundPixels = (Color[])CollectionUtils .CopyOf(finalBackgroundPixels); } else { LImage tmp = GraphicsUtils.GetResize(back, scaleWidth, scaleHeight); this.finalBackgroundPixels = tmp.GetPixels(); if (tmp != null) { tmp.Dispose(); tmp = null; } this.backgroundPixels = (Color[])CollectionUtils .CopyOf(finalBackgroundPixels); } this.finalDrawPixels = temp.GetPixels(); this.nowDrawPixels = (Color[])CollectionUtils.CopyOf(finalDrawPixels); } this.SetBlackToWhite(flag); if (temp != null) { temp.Dispose(); temp = null; } if (img != null) { img.Dispose(); img = null; } if (back != null) { back.Dispose(); back = null; } }
public PShadowEffect(LImage img, LImage back, int x, int y) : this(img, back, x, y, img.GetWidth(), img.GetHeight()) { }
public LPixmapData(LImage pix) : this(pix.GetPixels(), pix.GetWidth(), pix.GetHeight()) { }
public static LTexture.Mask CreateMask(LImage image) { if (image == null) { throw new RuntimeException("Image is null !"); } return CreateMask(image.GetIntPixels(), image.GetWidth(), image.GetHeight()); }