Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

прицел   Найти похожие ветки 

 
Весёлый   (2005-07-03 23:55) [0]

Привет всем, у меня такая задача нарисовать две линии, пересечение которых находилось бы на кончике курсора, а при движении мыши линии смещались. Кто ни будь знаеть как это можно программно реализовать?


 
KilkennyCat ©   (2005-07-04 00:05) [1]


> Кто ни будь знаеть как это можно программно реализовать?


Вполне возможно, что Кто Ни Будь знает, но он сюда не заходит - здесь китайский не отображается...


 
Юрий Зотов ©   (2005-07-04 00:17) [2]

> Весёлый   (03.07.05 23:55)

А в чем проблема? Сделайте свой курсор, вот и все.
См. в справке - TScreen.Cursors. Там и пример есть.


 
Весёлый   (2005-07-04 00:32) [3]

Да нет, дело не в курсоре, надо программно нарисовать две линии центр пересечения которых находился бы в кончике курсора, и при перемещении линии тоже должны сдвигаться, напоминает прицел, а линии должны идти от краёв формы


 
Eraser ©   (2005-07-04 00:52) [4]

Весёлый   (04.07.05 00:32) [3]

TCanvas.LineTo,
-//-MoveTo.


 
alex-drob   (2005-07-04 00:58) [5]

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
canvas.Brush.Color:=clBtnFace;
canvas.Rectangle(ClientRect);
canvas.Brush.Color:=clblack;
canvas.MoveTo(x,0);
canvas.LineTo(x,height);
canvas.MoveTo(0,y);
canvas.LineTo(width,y);
end;


 
Весёлый   (2005-07-04 01:02) [6]

alex-drob, если не трудно, напиши ещё как обвести вотруг курсора окружность радиусом 1 см.


 
alex-drob   (2005-07-04 01:11) [7]

20 px

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
canvas.Rectangle(ClientRect);
canvas.Brush.Color:=clblack;
canvas.MoveTo(x,0);
canvas.LineTo(x,height);
canvas.MoveTo(0,y);
canvas.LineTo(width,y);
canvas.Brush.Color:=clBtnFace;
canvas.Ellipse(x-10,y-10,x+10,y+10);
end;


 
alex-drob   (2005-07-04 01:21) [8]

Или так:

canvas.Brush.Color:=clBtnFace;
canvas.Pen.Color:=clBlack;
canvas.Rectangle(ClientRect);
canvas.Ellipse(x-10,y-10,x+10,y+10);
canvas.MoveTo(x,0);
canvas.LineTo(x,height);
canvas.MoveTo(0,y);
canvas.LineTo(width,y);


 
Просто Джо ©   (2005-07-04 01:30) [9]

> [5] alex-drob   (04.07.05 00:58)
Тогда уж как-то так:


 TForm1 = class(TForm)
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
 private
   OldX,
   OldY: Integer;
 public
 end;

...
implementation
...

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
 procedure DrawTarget (AtX,AtY: Integer);
 const
   Radius = 10;
 begin
  Canvas.Pen.Mode := pmNot;
   Canvas.MoveTo (AtX,0);
   Canvas.LineTo (AtX,Height);
   Canvas.MoveTo (0,AtY);
   Canvas.LineTo (Width,AtY);
   Canvas.Brush.Style := bsClear;
   Canvas.Ellipse(
     AtX-Radius,
     AtY-Radius,
     AtX+Radius,
     AtY+Radius
   );
 end;
 function NeedsErasing: Boolean;
 begin
   Result := (OldX<>0) and (OldY<>0)
 end;
 procedure StoreCoordinates (AtX,AtY: Integer);
 begin
   OldX := AtX;
   OldY := AtY
 end;
 procedure EraseIfNeeded;
 begin
   if NeedsErasing then
     DrawTarget(OldX,OldY)
 end;
begin
 EraseIfNeeded;
 DrawTarget(X,Y);
 StoreCoordinates(X,Y);
end;



> [6] Весёлый   (04.07.05 01:02)
В сантиметрах экранные координаты (и расстояния) не меряют.



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

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.063 c
14-1131181753
Lisa
2005-11-05 12:09
2005.11.27
Помогите с DXF


14-1131123453
lookin
2005-11-04 19:57
2005.11.27
Новый альбом Rammstein - Rosenrot


2-1131373422
Makxi
2005-11-07 17:23
2005.11.27
Service Application &amp; Delphi 6,7


9-1121415743
NeedleWTF
2005-07-15 12:22
2005.11.27
Загрузка модели в GLscene


14-1130772182
myWindow
2005-10-31 18:23
2005.11.27
Соединение компьютеров по технологии шина