私は誰かが私をピン止めするのを助けることができると思っているいくつかの奇妙な描画のアーティファクトを持っています。マニュアルペインティングの問題
基本的に私は右に動いていないグラデーションの背景を持つと思われる左ドッキングパネルを持っています。私は、パネルが左にドッキングし、そしてその上に透明のコントロールを持っていている(したがって、あなたは透明コントロールが正しく描画されたエッジに沿った赤の小さなスタブを見ることができます
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
サイズ変更時に、ペイントイベントが発生しないためです。だからあなたはResizeRedrawで強制する必要があり、残りは強制的なものではなく、自分の小さな方法で改善を助ける。以前はフォームのちらつきは、パネルではなくフォームのスタイルを設定していたためです。それは楽しい世界、手動の絵画世界です! – ThePower