Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 02:47   #1
dimon4il
 
Регистрация: 01.04.2009
Сообщений: 4
По умолчанию Нужна помощь при перерисовке в Image

Ситуация такая есть объект типа TImage, в нем нарисовано черным цветом чет через Canvas. Мне нужно чтобы при нажатии на кнопку изменялся цвет того что нарисовал.
Делал так:
var
col:TColor;
.........
procedure TForm1.FormCreate(Sender: TObject);
begin
col:=clgreen;
img.canvas.pen.color:=col;
img.canvas.rectangle (10,10,50,70);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
col:=clred;
img.repaint;
end;

цвет не изменяется. Помогите кто в курсе, че я не так делаю и как сделать чтобы цвет изменился.
dimon4il вне форума Ответить с цитированием
Старый 03.05.2009, 09:28   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

А вы переместите код
Код:
img.canvas.pen.color:=col;
img.canvas.rectangle (10,10,50,70);
В обработчик события формы OnPaint
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 03.05.2009, 10:30   #3
dimon4il
 
Регистрация: 01.04.2009
Сообщений: 4
По умолчанию

дело в том что у меня много таких компонентов и они создаются динамически... можно конечно переделать на onpaint...... но других вариантов разве нету?
dimon4il вне форума Ответить с цитированием
Старый 03.05.2009, 10:41   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вы же рисуете ее только при создании формы, как же вы хотите ее обновлять методом Repaint?
При Repaint обрабатывается событие OnPaint
Так что, мне кажется, только так, как я сказал, будет работать.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 03.05.2009, 10:45   #5
dimon4il
 
Регистрация: 01.04.2009
Сообщений: 4
По умолчанию

не, это я пример маленький написал, чтобы весь свой код не писать у меня там по другому..... у меня при нажатии мыши на уже вставленом по всей области формы Image с картинкой рисуется различные фигуры через канвас... но при повторном нажатии на эти фигуры мне нужно чтобы их цвет менялся, якобы происходило выделение...

Последний раз редактировалось dimon4il; 03.05.2009 в 10:47.
dimon4il вне форума Ответить с цитированием
Старый 03.05.2009, 11:47   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

напиши внешнюю процедуру(как метод формы лучше)
в нее передавай нужный цвет и идентификатор фигур что надо нарисовать(например 1-квадрат, 2-круг...и тд)
а процедуру пропиши в ОнПаинте (учти те условия по которым ты сам хотел отличать, каким цветом и что рисовать)
в общем вот
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.05.2009, 15:19   #7
dimon4il
 
Регистрация: 01.04.2009
Сообщений: 4
По умолчанию

спасибо вам что откликнулись, буду переделывать тогда код... хотя так впадло))
dimon4il вне форума Ответить с цитированием
Старый 03.05.2009, 16:29   #8
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот, сваял прогу, я думаю это то что вам нужно
Вложения
Тип файла: rar Перемещение фигур.rar (267.1 Кб, 10 просмотров)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при запуске. Нужна помощь Dimanduc Паскаль, Turbo Pascal, PascalABC.NET 1 25.02.2009 22:08
В Image Transparen = true - тормоза при рисовании lexaltd Мультимедиа в Delphi 0 28.09.2008 16:03
Изменение вида Image при наведении указателя Сергей А Помощь студентам 3 05.08.2007 15:26
нужна помощь Селезнёв Microsoft Office Excel 1 02.03.2007 03:19