Главная страница
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.025 c
1-1130303079
zsv
2005-10-26 09:04
2005.11.27
Текущий каталог, ярлык и справка.


1-1130788940
Grol
2005-10-31 23:02
2005.11.27
Как ликвидировать выделенную память под компонент.


5-1113565924
имя
2005-04-15 15:52
2005.11.27
Внимание Подлог!!!


2-1131802914
ЯТутаНовичек
2005-11-12 16:41
2005.11.27
Создание сообщения Outlook в delphi


2-1131723575
ASScef
2005-11-11 18:39
2005.11.27
При нажатии кнопки не выполняется команда