Вниз
Скачать: CL | DM;

Как бы мне попасть линией от начала до текущей позиции TrackBar   Найти похожие ветки 

← →
AV ©   (2012-07-18 15:57) [0]

переопределил так

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-18 16:01) [1]

Value - это Position
4, 3 - "коэффициенты"

как видно, 4(красным) - многовато
а 3 - почти, но тоже не то

а как правильно будет?
(не столько подгон до нужного интересует, сколько правило, по которому вычислять)


← →
Юрий Зотов ©   (2012-07-18 16:11) [2]

> правило, по которому вычислять

Дык... Пропорция? Шкала же линейная.


← →
AV ©   (2012-07-18 16:25) [3]

не соображу, какая
а если еще длина формы поменяется(трэкбары динамически создаются, под размеры формы) - то опять не то.

если так
 Canvas.Pen.Color := clRed;
 Canvas.MoveTo(10 , 0 );
 Canvas.LineTo( Round( Width/100 * Value) , 0);

то так
http://ge.tt/1UennfK/v/0


← →
Юрий Зотов ©   (2012-07-19 03:28) [4]

ЛП и ПП - ширина левого и правого полей трэкбара.  

Canvas.MoveTo(ЛП , 0 );
Canvas.LineTo(ЛП + MulDiv(Width - ЛП - ПП,  Value, 100));


← →
Юрий Зотов ©   (2012-07-19 03:35) [5]

Точнее, так:

Canvas.MoveTo(ЛП , 0 );
Canvas.LineTo(ЛП + MulDiv(Width - ЛП - ПП,  Position - Min, Max - Min));


← →
Юрий Зотов ©   (2012-07-19 03:59) [6]

И посмотри сообщение TBM_GETCHANNELRECT.


← →
AV ©   (2012-07-19 09:42) [7]

да, примерно, правильно. А дальше и не надо.
Спасибо.


← →
Юрий Зотов ©   (2012-07-19 09:57) [8]

Можно попробовать уменьшить ошибку.

var D: Double;

Canvas.MoveTo(ЛП , 0 );
D := (Width - ЛП - ПП) * (Position - Min)  / (Max - Min);
Canvas.LineTo(ЛП + Round(D));


← →
AV ©   (2012-07-19 11:17) [9]

ага, точнее получается.
Все, сдаю как есть.
Спасибо, д.Юра!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.056 c
2-1328793010
Че
2012-02-09 17:10
2013.03.22
Приложение виснет и потребляет память на win7-x64, при этом все о


2-1334410535
tolbase
2012-04-14 17:35
2013.03.22
Delphi 7! Как отловить событие minimize формы?


15-1350165727
Юрий Зотов
2012-10-14 02:02
2013.03.22
Ностальгия по детству


4-1255976428
minomorf
2009-10-19 22:20
2013.03.22
Как добавлять/удалять вкладки в SysTabControl32?


2-1329332051
Zheksonz
2012-02-15 22:54
2013.03.22
Быстрое сохранение параметров в файл




   Наверх