我有一些奇怪的绘画文物,我希望有人可以帮我牵制。手工绘画问题
基本上我有一个左停靠的面板,应该有一个渐变的背景,一直没有正常工作。我已经改变了颜色调试
screenshot http://img509.imageshack.us/img509/5650/18740614.png
面板停靠左,上有一个透明的控制(因此你可以看到沿边缘的红色小存根,其中的透明控制已经正确涂,拿起背景颜色)。
但是,当我缓慢调整面板大小时,底部会留下红线,我希望这些红线会被黄色填充物覆盖。我正在使用的代码如下:
// Construction
sidePanel.Paint += new PaintEventHandler(OnPaint);
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Panel pb = sender as Panel;
PaintControl(pb.Width, pb.Height, sender, e, true);
}
private static void PaintControl(int width, int height, object sender, PaintEventArgs e, bool sidebar)
{
Rectangle baseRectangle = new Rectangle(0, 0, width -1, height-1);
using (LinearGradientBrush gradientBrush = new LinearGradientBrush(baseRectangle, WizardBaseForm.StartColour, WizardBaseForm.EndColour, 90))
{
e.Graphics.Clear(Color.Yellow);
e.Graphics.DrawRectangle(Pens.Red, baseRectangle);
e.Graphics.FillRectangle(Brushes.Yellow, baseRectangle);
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
这样做的整体效果是我没有得到任何一个不错的纯色,或者一个漂亮的渐变填充,当我调整。
够公平的。奇迹般有效。我仍然不明白为什么最初的问题表现出来呢? – Ian 2009-08-25 11:07:29
这是因为当你调整大小时,绘画事件不会被解雇。所以你需要用ResizeRedraw来强制它,其余的不是强制性的,而是用自己的小方法来帮助改进。之前表单的闪烁是因为您为表单设置了样式而不是面板。这是一个有趣的世界,手工绘画世界! – ThePower 2009-08-25 11:29:22