public static byte[] CreateShadowImage( ShadowImageType imageType, int Width, int Height, Color ShadowColor, Color BackColor, ImageFormat Format) { MemoryStream memStream = new MemoryStream(); Bitmap bmpPaint = new Bitmap(Width, Height); Graphics grph = Graphics.FromImage(bmpPaint); if (imageType == ShadowImageType.Blank) { SolidBrush brush; brush = new SolidBrush(BackColor); grph.FillRectangle(brush, 0, 0, Width, Height); } else if (imageType == ShadowImageType.Top || imageType == ShadowImageType.Bottom || imageType == ShadowImageType.Left || imageType == ShadowImageType.Right) { int angle = 0; switch (imageType) { case ShadowImageType.Top: angle = 270; break; case ShadowImageType.Right: angle = 0; break; case ShadowImageType.Bottom: angle = 90; break; case ShadowImageType.Left: angle = 180; break; } LinearGradientBrush brush; brush = new LinearGradientBrush( new Rectangle(0, 0, Width, Height), ShadowColor, BackColor, angle, true); brush.Blend = shadowBlendScaleLinear; grph.FillRectangle(brush, 0, 0, Width, Height); } else { GraphicsPath path = new GraphicsPath(); path.AddEllipse(0, 0, Width * 2, Height * 2); PathGradientBrush brush = new PathGradientBrush(path); brush.CenterColor = ShadowColor; Color[] colors = { BackColor }; brush.SurroundColors = colors; if (imageType == ShadowImageType.BottomRight) { brush.TranslateTransform(-Width, -Height); } else if (imageType == ShadowImageType.TopRight) { brush.TranslateTransform(-Width, 0); } else if (imageType == ShadowImageType.BottomLeft) { brush.TranslateTransform(0, -Height); } brush.CenterPoint = new PointF(Width, Height); brush.Blend = shadowBlendScaleRadial; grph.FillRectangle(new SolidBrush(BackColor), 0, 0, Width, Height); grph.FillRectangle(brush, 0, 0, Width, Height); } bmpPaint.Save(memStream, Format); return(memStream.GetBuffer()); }
public static byte[] CreateShadowImage( ShadowImageType imageType, int Width, int Height, Color ShadowColor, Color BackColor, ImageFormat Format) { MemoryStream memStream = new MemoryStream(); Bitmap bmpPaint = new Bitmap(Width,Height); Graphics grph = Graphics.FromImage(bmpPaint); if ( imageType == ShadowImageType.Blank ) { SolidBrush brush; brush = new SolidBrush(BackColor); grph.FillRectangle(brush,0,0,Width,Height); } else if ( imageType == ShadowImageType.Top || imageType == ShadowImageType.Bottom || imageType == ShadowImageType.Left || imageType == ShadowImageType.Right ) { int angle=0; switch( imageType ) { case ShadowImageType.Top: angle = 270; break; case ShadowImageType.Right: angle = 0; break; case ShadowImageType.Bottom: angle = 90; break; case ShadowImageType.Left: angle = 180; break; } LinearGradientBrush brush; brush = new LinearGradientBrush( new Rectangle(0,0,Width,Height), ShadowColor, BackColor, angle,true); brush.Blend = shadowBlendScaleLinear; grph.FillRectangle(brush,0,0,Width,Height); } else { GraphicsPath path = new GraphicsPath(); path.AddEllipse(0, 0, Width*2,Height*2); PathGradientBrush brush = new PathGradientBrush(path); brush.CenterColor = ShadowColor; Color[] colors = {BackColor}; brush.SurroundColors = colors; if ( imageType == ShadowImageType.BottomRight ) { brush.TranslateTransform(-Width,-Height); } else if ( imageType == ShadowImageType.TopRight ) { brush.TranslateTransform(-Width,0); } else if ( imageType == ShadowImageType.BottomLeft ) { brush.TranslateTransform(0,-Height); } brush.CenterPoint=new PointF(Width,Height); brush.Blend = shadowBlendScaleRadial; grph.FillRectangle(new SolidBrush(BackColor),0, 0, Width, Height); grph.FillRectangle(brush, 0, 0, Width, Height); } bmpPaint.Save(memStream,Format); return memStream.GetBuffer(); }