|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.08.2012, 09:38 | #1 |
Пользователь
Регистрация: 04.07.2010
Сообщений: 28
|
След после перемещения TImage
Компонент TImage создается динамически и размещается на компоненте PaintBox. При изменении положения TImage путем задания его новых координат (Left и Top) на месте начального положения остается его след. Как можно от него избавиться? Установка TImage.Visible:= False перед началом перемещения ничего не дает. Закрашивать не подходит т.к. PaintBox, являющийся фоном, имеет разные цвета и заранее не известно на каком из них (либо вообще на их границе) был размещен компонент TImage.
|
03.08.2012, 11:26 | #2 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
Используй Form1.Repaint;
|
03.08.2012, 12:59 | #3 |
Пользователь
Регистрация: 04.07.2010
Сообщений: 28
|
Тут мне пришла в голову такая мысль - а может причина оставления следа это то, что родителем моего TImage является TPanel, а уже на TPanel лежит TPaintBox, на котором отрисован фон. По этому то фону и должен двигаться TImage. Таким образом, и TImage и TPaintBox имеют общего родителя TPanel. После перемещения я и вижу на месте TImage кусочек его родителя. А вот сделать TPaintBox родителем TImage не получается.
|
03.08.2012, 14:07 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
между прочим TImage не может быть поверх TPaintBox.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
03.08.2012, 16:37 | #5 |
Пользователь
Регистрация: 04.07.2010
Сообщений: 28
|
Ну вот и я о том же. А как правильно поступить в таком случае? Задача такая - точка размером 6х6 пикселов перемещается по TPaintBox на которой начерчены круги? Начинал с того, что точку тоже отрисовывал, но при перемещении "дырка" от ее начального положения все равно оставалась. Решил использовать TImage, поскольку рассчитывал, что изменяя его Left и Тор смогу двигать точку как захочу. Но результат тот же - след остается. Есть мысль поступить так - скопировать участок фона, на котором будет располагаться точка. Поместить на него точку. При перемещении заткнуть полученную "дырку" скопированным участком. Но не слишком ли это сложно и долго? Нет ли более простого пути. Задача усложняется тем, что точек может быть много и каждая перемещается. Эскиз проблемы представлен на прилагаемом рисунке.
|
03.08.2012, 16:57 | #6 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
При каждом премещении, необходимо перерисовывать канву.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
Последний раз редактировалось chertovich; 03.08.2012 в 17:03. |
03.08.2012, 16:59 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
или TPaintBox тоже не оконный? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
03.08.2012, 17:07 | #8 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
TPainBox тоже не оконный, он наследник, как и TImage, класса TGraphicControl
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
|
03.08.2012, 17:16 | #9 |
Пользователь
Регистрация: 04.07.2010
Сообщений: 28
|
|
03.08.2012, 17:18 | #10 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Включите двойную буферизацию компонента (DoubleBuffered := True), на котором лежит ваш TPaintBox, и все будет быстро и красиво перерисовываться, проверено. Только для вызова перерисовки, вызывайте метод PaintBox.Repaint (Refresh), а не на прямую код.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
Последний раз редактировалось chertovich; 03.08.2012 в 17:23. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
След массива. | Karm29 | Microsoft Office Excel | 3 | 30.07.2010 19:11 |
След матрицы | NauDS | Помощь студентам | 5 | 11.03.2009 15:06 |
След матрицы | r00tus | Помощь студентам | 2 | 25.02.2009 14:43 |
TImage-после image1.picture.bitmap.width и .height исчезает картинка | Саня | Компоненты Delphi | 4 | 03.08.2007 07:55 |