如何在椭圆上画阴影?
How to draw a drop shadow on ellipse?
g.FillEllipse(Pens.Black, ClientRectangle.X, ClientRectangle.Y, 60, 60);
这是我的椭圆代码。
所以我想为它制作透明阴影,如果可能的话阴影大小可以调整。
winforms
中没有现成的阴影,但是在绘制真正的阴影之前先画几个半透明椭圆可以得到很好的效果:
不要让代码欺骗了您:投影仅由三行代码有效创建。
private void panel1_Paint_1(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
Color color = Color.Blue;
Color shadow = Color.FromArgb(255, 16, 16, 16);
for (int i = 0; i < 8; i++ )
using (SolidBrush brush = new SolidBrush(Color.FromArgb(80 - i * 10, shadow)))
{ g.FillEllipse(brush, panel1.ClientRectangle.X + i*2,
panel1.ClientRectangle.Y + i, 60, 60); }
using (SolidBrush brush = new SolidBrush(color))
g.FillEllipse(brush, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, 60, 60);
// move to the right to use the same coordinates again for the drawn shape
g.TranslateTransform(80, 0);
for (int i = 0; i < 8; i++ )
using (Pen pen = new Pen(Color.FromArgb(80 - i * 10, shadow), 2.5f))
{ g.DrawEllipse(pen, panel1.ClientRectangle.X + i * 1.25f,
panel1.ClientRectangle.Y + i, 60, 60); }
using (Pen pen = new Pen(color))
g.DrawEllipse(pen, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, 60, 60);
}
请注意,对于非黑色的颜色,您通常需要使用黑色或灰色或该颜色的非常深的色调。
请注意,您的代码无法像发布的那样工作:您只能用钢笔绘图或用画笔填充!
g.FillEllipse(Pens.Black, ClientRectangle.X, ClientRectangle.Y, 60, 60);
这是我的椭圆代码。
所以我想为它制作透明阴影,如果可能的话阴影大小可以调整。
winforms
中没有现成的阴影,但是在绘制真正的阴影之前先画几个半透明椭圆可以得到很好的效果:
不要让代码欺骗了您:投影仅由三行代码有效创建。
private void panel1_Paint_1(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
Color color = Color.Blue;
Color shadow = Color.FromArgb(255, 16, 16, 16);
for (int i = 0; i < 8; i++ )
using (SolidBrush brush = new SolidBrush(Color.FromArgb(80 - i * 10, shadow)))
{ g.FillEllipse(brush, panel1.ClientRectangle.X + i*2,
panel1.ClientRectangle.Y + i, 60, 60); }
using (SolidBrush brush = new SolidBrush(color))
g.FillEllipse(brush, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, 60, 60);
// move to the right to use the same coordinates again for the drawn shape
g.TranslateTransform(80, 0);
for (int i = 0; i < 8; i++ )
using (Pen pen = new Pen(Color.FromArgb(80 - i * 10, shadow), 2.5f))
{ g.DrawEllipse(pen, panel1.ClientRectangle.X + i * 1.25f,
panel1.ClientRectangle.Y + i, 60, 60); }
using (Pen pen = new Pen(color))
g.DrawEllipse(pen, panel1.ClientRectangle.X, panel1.ClientRectangle.Y, 60, 60);
}
请注意,对于非黑色的颜色,您通常需要使用黑色或灰色或该颜色的非常深的色调。
请注意,您的代码无法像发布的那样工作:您只能用钢笔绘图或用画笔填充!