このトピックから同様の問題を見つけましたGDI+ .NET: LinearGradientBrush wide than 202 Pixels cause color wrap-around しかし、解決策は私にとってはうまくいきませんでした。私もその話題で質問することはできません。ご覧ください。これが私のコードです:
public partial class Form1 : Form {
int ShadowThick = 10;
Color ShadowColor = Color.Gray;
int width;
int height;
public Form1() {
InitializeComponent();
width = this.Width - 100;
height = this.Height - 100;
}
private void Form1_Paint(object sender, PaintEventArgs e) {
//e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
GraphicsPath shadowPath = new GraphicsPath();
LinearGradientBrush shadowBrush = null;
// draw vertical shadow
shadowPath.AddArc(this.width - this.ShadowThick, this.ShadowThick, this.ShadowThick,
this.ShadowThick, 180, 180);
shadowPath.AddLine(this.width, this.ShadowThick * 2, this.width,
this.height - this.ShadowThick);
shadowPath.AddLine(this.width, this.height - this.ShadowThick,
this.width - this.ShadowThick, this.height - this.ShadowThick);
shadowPath.CloseFigure();
// declare the brush
shadowBrush = new LinearGradientBrush(PointF.Empty,
new PointF(this.ShadowThick + 1, 0), this.ShadowColor, Color.Transparent);
//shadowBrush = new LinearGradientBrush(PointF.Empty,
// new PointF(this.ShadowThick + 1, 0), this.ShadowColor, Color.Transparent);
//e.Graphics.DrawPath(Pens.Black, shadowPath);
e.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
e.Graphics.FillPath(shadowBrush, shadowPath);
}
}
左から右に暗くしたいのですが、次を参照してください。
私は影を描こうとしていますが、これにこだわっています。