Ваш контроль рисуется на общем холсте. К тому времени, когда он достигнет значения вашего Paint
метода управления, Canvas.Stroke.Kind
это TBrushKind.None
так, если вы не присвоите ему какое-то другое значение, оно на самом деле ничего не накрасит.
Вы должны добавить
Canvas.Stroke.Kind := TBrushKind.Solid;
Но это будет только рисовать горизонтальную линию (вы забыли создать точки и сделать DrawLine
призыв к вертикальной), и она не будет заполнять фон белым цветом.
Самый простой способ сделать это
Canvas.ClearRect(ClipRect, TAlphaColorRec.White);
Обычно общие значения холста могут (и будут) меняться другими элементами управления. Лучший способ справиться с этим - подражать коду от TShape
предоставления ваших собственных TFill
и TStroke
полей и назначать их холсту перед рисованием. Таким образом, вы можете быть уверены, что не пропустите установку определенного значения Stroke или Fill, которое может быть изменено вне вашего контроля.