![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите поставить точку на координатной плоскости [D7, WinXP]
NaRuTo © (2007-11-25 10:38:00)Я создаю программу, которая умеет ставить точки на координатной плоскости, но у меня за единичный отрезок 14 px, если я хочу поставить точку, то мне приходится прицеливаться точно в точку.
Как мне сделать так чтобы, если курсор направить ближе к точке, то точка будет ставится в этой точке?
Zeqfreed (2007-11-25 12:05:00) [1]
x' = (x + 7) / 14?
{RASkov} (2007-11-25 11:28:00) [2]CELLSIZE - выставь свое значение... т.е. 14.
параметр const Diag тебе наверное не нужен, я просто из своего модуля скопировал кусок "не глядя"....
ЗЫ Эх.... думаю ветку перенесут в "начинающие"....
{RASkov} (2007-11-25 11:24:00) [3]> [0] NaRuTo (25.11.07 10:38)
Зачем этот вопрос задавать в конфе по компонентам?
Вот.... так.... попробуй:
const CELLSIZE = 25;
HALFCELLSIZE = CELLSIZE div 2;
implementation
{$R *.dfm}
procedure CorrectXY(const FromX, FromY: Integer; var ToX, ToY: Integer; const Diag: Boolean=False);
var CorrectX, CorrectY: Integer;
begin
CorrectX:=(FromX mod CELLSIZE);
CorrectY:=(FromY mod CELLSIZE);
ToX:=FromX-CorrectX; if CorrectX>HALFCELLSIZE then INC(ToX, CELLSIZE);
ToY:=FromY-CorrectY; if CorrectY>HALFCELLSIZE then INC(ToY, CELLSIZE);
if Diag then if ABS(XCen-ToX) > ABS(YCen-ToY) then ToY:=YCen else ToX:=XCen;
end;