Странное поведение TPaintBox

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Странное поведение TPaintBox

Сообщение Ask » 16.03.2011 11:00:44

Для начала хочу уточнить, что всё сказанное ниже относится к свежему Lazarus.
Часть возможностей, наверное, работает и в 0.9.28.2, но не помню, какие именно.

меня не устраивает для масштабирования только "резиновая" линия.

См. toolsdemo.
Там нет примера с использованием имеенно трек-бара, но его легко
построить либо на базе TZoomClickTool, либо непосредственно присваиванием
свойству TChart.LogicalExtent.

1. Возможность градиентной заливки

См. eventdemo. Правда, оси и Title пока нельзя заливать.
Мне кстати интересно, как Вы реализовали своийства, управляющие заливкой?
Я давно собирался сделать градиенты, но превращать каждое свойство типа Color
в блок из десятка свойств, описывающих градиент, кажется избыточным.

3. Скроллинг графика по обеим осям координат. Скроллинг производится как с использованием
скролл-баров, так и перемещением указателя мыши при нажатой левой кнопке.

См. toolsdemo, инструмент TPanDragTool.
Скроллбары, правда, автоматически не привязываются -- тут придётся написать обработчики событий.

компоненте для этого имеются функции обратного пересчета
позиции указателя мыши в значения системы координат

TChart.ImageToGraph
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

Re: Странное поведение TPaintBox

Сообщение Andrew55 » 16.03.2011 14:17:03

Ask писал(а):Мне кстати интересно, как Вы реализовали своийства, управляющие заливкой?


Довольно тупо:

TGradient = class(TPersistent)
private
FColor1: TColor;
FColor2: TColor;
FColor3: TColor;
FColor4: TColor;
FColor5: TColor;
FColor6: TColor;
FColors: byte;
FHorizont: boolean;
constructor Create;
destructor Destroy;
procedure SetColor1(const AValue: TColor);
procedure SetColor2(const AValue: TColor);
procedure SetColor3(const AValue: TColor);
procedure SetColor4(const AValue: TColor);
procedure SetColor5(const AValue: TColor);
procedure SetColor6(const AValue: TColor);
procedure SetColors(const AValue: byte);
procedure SetHorizont(const AValue: boolean);
protected
public
published
property Colors: byte Read FColors Write SetColors;
property Color1: TColor Read FColor1 Write SetColor1;
property Color2: TColor Read FColor2 Write SetColor2;
property Color3: TColor Read FColor3 Write SetColor3;
property Color4: TColor Read FColor4 Write SetColor4;
property Color5: TColor Read FColor5 Write SetColor5;
property Color6: TColor Read FColor6 Write SetColor6;
property Horizont: boolean Read FHorizont Write SetHorizont;
end;

Вам спасибо. Извините, если что не так.
Скачаю, конечно, 0.9.29 и все попробую.
Кстати, Ask, где можно поиметь внятную информацию о TAChart?
Аватара пользователя
Andrew55
новенький
 
Сообщения: 17
Зарегистрирован: 19.01.2011 11:20:37
Откуда: Ставрополь

Re: Странное поведение TPaintBox

Сообщение Ask » 16.03.2011 14:33:38

Да, но теперь к каждому свойству типа Color, BackColor, SeriesColor и т.д. прибавляется соответственно Gradient, BackGradient, SeriesGradient...
А если цвет задаётся для каждого столбца отдельно -- выходит, нужно по градиенту на столбец?
Я уже давно думаю, как бы покрасивее всё организовать, так ничего и не решил.

Кстати, Ask, где можно поиметь внятную информацию о TAChart?


Не знаю. Смотря какая информация считается внятной.
Есть зачатки документации в формате fpdoc (Лазарус должен их сам показывать при наведении курсора на свойство).
Однако, документация не закончена, поскольку fpdoc содержит ошибку, котороая мешает ему разобрать исходники TAChart,
а разработчики FPC не желают применять мой патч для исправления этой проблемы.

Учебника нет (хотя, кстати, в единственном известном мне учебнике по Lazarus TAChart бегло упоминается).
Имеется большое количество демо-программ (22 штуки на текущий момент), которые можно использовать как образцы
применения основных фич.
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

Re: Странное поведение TPaintBox

Сообщение Andrew55 » 16.03.2011 14:40:13

Спасибо, Ask!
Будем, как часто бывает в нашей жизни, осваивать методом проб и ошибок.
Успехов!

Добавлено спустя 22 часа 15 минут 32 секунды:
Однако вернемся к нашим баранам, то есть псевдокнопкам, иначе говоря, к TPaintBox.
Начала прослеживаться некоторая система в отрисовке пейнтбокса: складывается впечатление,
что ложная отрисовка производится на одном из старых положений пейнтбокса до изменения размеров
формы. Как я уже отмечал, если размеры формы не меняются после ее открытия, ничего
плохого не происходит.
Аватара пользователя
Andrew55
новенький
 
Сообщения: 17
Зарегистрирован: 19.01.2011 11:20:37
Откуда: Ставрополь

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

Рейтинг@Mail.ru