たとえば、私のOnPaintがlengthと呼ばれる変数と同じ長さの線を描画するとします。また、色と呼ばれるブール値があります。boolがtrueの場合、線は赤になり、falseの場合、線は黒になります。画面に2つの異なる色と異なる長い線を表示することは可能でしょうか(私の質問は、OnPaintは表面全体を再描画しますが、一部の描画をそのままにしておくことは可能ですか)。
質問が少し紛らわしいかもしれないことを私は知っています。
これにより、isValid == trueかfalseかに応じて、長さと色が異なる2本の線が描画されます。線は画面に残ります。あなたの質問の他の部分については、アレックスは正しい方法を提供しました。
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
bool isTrue = false;
if (isTrue == true)
{
g.DrawLine(Pens.Red, new Point(0, 50), new Point(150, 50));
}
else
{
g.DrawLine(Pens.Blue, new Point(0, 50), new Point(300, 50));
}
g.Dispose();
}
}
}
私の知る限り、そのような機能はありません。
ただし、独自の OnPaint メソッドを (base.OnPaint() を呼び出さずに) 作成し、このロジックを統合することはできます (必要な要素だけを描画することで、何かが残る可能性があります)。