Windows での基本的なグラフィック コントロールについては、GDI+を参照してください。
これはGDI+ に関する C# チュートリアルです。
また
GDI+ のクロス プラットフォーム バージョンについては、Libgdiplusを確認してください。
そして、これで始められるはずです...明らかに、ペイントが呼び出されるたびにオブジェクトで new を呼び出したくないでしょう...しかし、アイデアはわかります。
public partial class Form1 : Form
{
    Graphics g = null;
    public Form1()
    {
        InitializeComponent();
        g = Graphics.FromHwnd(Handle);
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    }
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Brush b = new SolidBrush(Color.Black);
        Pen pen = new Pen(b, 20.5f);
        Point p1 = new Point(0, 0);
        Point p2 = new Point(this.Width, this.Height);
        g.DrawLine(pen, p1, p2);
    }
}