public BorderPaint(Bitmap image, bool imageIsOwned, BorderPaintMode flags, params Rectangle[] slices) { _flags = flags; _slices = slices; _bitmap = image; _imageIsOwned = imageIsOwned; if (IsFlagSet(flags, BorderPaintMode.GDI)) { _hBitmap = image.GetHbitmap(); } else if (IsFlagSet(flags, BorderPaintMode.Cached)) { _sliceCache = new Bitmap[SLICECOUNT]; for (int i = 0; i < SLICECOUNT; i++) { if (slices[i].Width > 0 && slices[i].Height > 0) { Bitmap cachedSlice = new Bitmap(slices[i].Width, slices[i].Height, image.PixelFormat); using (Graphics g = Graphics.FromImage(cachedSlice)) g.DrawImage(image, new Rectangle(0, 0, slices[i].Width, slices[i].Height), slices[i], GraphicsUnit.Pixel); _sliceCache[i] = cachedSlice; } } } }
public BorderPaint(Bitmap image, bool imageIsOwned, BorderPaintMode flags, int vert1, int vert2, int horiz1, int horiz2) : this(image, imageIsOwned, flags, GraphicsHelper.SliceCompositedImageBorder(image.Size, vert1, vert2, horiz1, horiz2)) { }
private static bool IsFlagSet(BorderPaintMode val, BorderPaintMode test) { return (val & test) == test; }