Ja richtig, innerhalb von WM_PAINT gibts schon eine Clipping Region und daher muß man das ganze dann mit den entsprechenden Funktionen machen.
Damit sieht (der Vollständigkeit halber) der Code von oben wie folgt aus:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
R: TRect;
begin
PaintBox1.Canvas.Pen.Color := clBlue;
PaintBox1.Canvas.MoveTo(0,0);
PaintBox1.Canvas.LineTo(PaintBox1.Width, PaintBox1.Height);
R := PaintBox1.ClientRect;
InflateRect(R, -10, -10);
IntersectClipRect(PaintBox1.Canvas.Handle, R.Left, R.Top, R.Right, R.Bottom);
PaintBox1.Canvas.Pen.Color := clRed;
PaintBox1.Canvas.MoveTo(PaintBox1.Width, 0);
PaintBox1.Canvas.LineTo(0, PaintBox1.Height);
end;