![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как бы мне попасть линией от начала до текущей позиции TrackBar [D7]
AV © (2012-07-18 15:57:00)переопределил так
procedure TMyTB.Paint;
var
pw: integer;
pc: Integer;
begin
inherited;
pw := Canvas.Pen.Width;
pc := Canvas.Pen.Color;
Canvas.Pen.Width := 5;
Canvas.Pen.Color := clRed;
Canvas.MoveTo(10 , 0 );
Canvas.LineTo(Value * 4 , 0);
Canvas.Pen.Color := clGreen;
Canvas.MoveTo(10 , 5 );
Canvas.LineTo(Value * 3 , 5);
Canvas.Pen.Color := pc;
Canvas.Pen.Width := pw;
end;
картинка такая
http://ge.tt/4w82kfK
AV (2012-07-19 11:17:00) [1]ага, точнее получается.
Все, сдаю как есть.
Спасибо, д.Юра!
Юрий Зотов (2012-07-19 09:57:00) [2]Можно попробовать уменьшить ошибку.
var D: Double;
Canvas.MoveTo(ЛП , 0 );
D := (Width - ЛП - ПП) * (Position - Min) / (Max - Min);
Canvas.LineTo(ЛП + Round(D));
AV (2012-07-19 09:42:00) [3]да, примерно, правильно. А дальше и не надо.
Спасибо.
Юрий Зотов (2012-07-19 03:59:00) [4]И посмотри сообщение TBM_GETCHANNELRECT.
Юрий Зотов (2012-07-19 03:35:00) [5]Точнее, так:
Canvas.MoveTo(ЛП , 0 );
Canvas.LineTo(ЛП + MulDiv(Width - ЛП - ПП, Position - Min, Max - Min));
Юрий Зотов (2012-07-19 03:28:00) [6]ЛП и ПП - ширина левого и правого полей трэкбара.
Canvas.MoveTo(ЛП , 0 );
Canvas.LineTo(ЛП + MulDiv(Width - ЛП - ПП, Value, 100));
AV (2012-07-18 16:25:00) [7]не соображу, какая
а если еще длина формы поменяется(трэкбары динамически создаются, под размеры формы) - то опять не то.
если так
Canvas.Pen.Color := clRed;
Canvas.MoveTo(10 , 0 );
Canvas.LineTo( Round( Width/100 * Value) , 0);
то так
http://ge.tt/1UennfK/v/0
Юрий Зотов (2012-07-18 16:11:00) [8]> правило, по которому вычислять
Дык... Пропорция? Шкала же линейная.
AV (2012-07-18 16:01:00) [9]Value - это Position
4, 3 - "коэффициенты"
как видно, 4(красным) - многовато
а 3 - почти, но тоже не то
а как правильно будет?
(не столько подгон до нужного интересует, сколько правило, по которому вычислять)