Как очистить окно от элементов TImage Delphi?

Программа рисует граф, вершины которого представлены, как записи содержащие изображение круга и значение вершины. Все записи хранятся в динамическом массиве. При задании нового графа заливается канва всей формы, удаляется массив изображений.
Всё очищается, как и требуется, но если расположение вершины нового графа совпадает с расположением вершины старого, то получается, что накладывается часть старого изображения на новое. Как эффективно очистить форму после удаления массива вершин?
Кстати, линии рисуются через MoveTo, LineTo и удаляются бесследно после заливки формы.

Поискал немного советов, попробовал некоторые - не помогают.

C = record
    graphical: TImage;
    value: Integer;

...

  Nodes: array of C;
  Node: TImage;

...

procedure Cleaner; // Очистка формы от рисунков
var
  r: trect;
begin
  r.Height := WGraph.Height;
  r.Width := WGraph.Width;
  r.Top := 0;
  r.Left := 0;
  WGraph.Canvas.FillRect(r);
end;

...

Node.graphical.AutoSize := true;
Node.graphical.Picture.loadfromfile('white.bmp'); //Загрузка изображения
Node.graphical.Transparent := true; //Прозрачность
Node.graphical.Canvas.TextOut(14, 11, IntToStr(i + 1)); //Добавление текста

...

if NodesExists = 1 then //Проверка на существование массива с вершинами
  begin
    for i := 0 to length(Nodes) - 1 do
       Nodes[i].graphical.Destroy;
    setlength(Nodes, 0);
  end;
WGraph.Refresh;
WGraph.Repaint;
  • Вопрос задан
  • 2820 просмотров
Решения вопроса 1
@Alexeyslav
Программирование, электроника
Если у вас заливается канва, то откуда "старое" изображение берется? Магии ведь не бывает. Может, вы забываете очищать массив со старыми значениями вершин и они отрисовываются вновь?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HaJIuBauKa
@HaJIuBauKa
Попробуйте использовать TPaintBox и рисовать на его канве.
При отрисовке нового графа, в крайнем случае можно компонент TPaintBox пересоздать.
Ответ написан
Залить всё пространство белым (или каким там у вас) цветом. Работает 100%.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы