Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Двигаем крестик для показа значений X/Y

Поиск:
Код
// TPanel, TImage e TLabel components
// Insert Image into Panel...

private
  BmpH, BmpV : TBitmap;
  OldX, OldY: Integer;
end;

var
 RectSaved : boolean = false;

procedure TFormMain.FormCreate(Sender: TObject);
begin
 PanelImage.DoubleBuffered := true; // This prevents that the image is blinking
 LabelHint.Transparent := true;
 LabelHint.Font.Color := clNave;
end;

procedure TFormMain.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 Cross(X, Y);
end;

procedure TFormMain.Cross(X, Y: Integer);
begin
 Image.Canvas.Pen.Color := clBlack;
 // Restore last image to erase line
 if RectSaved then
 begin
   Image.Canvas.CopyRect(Rect(OldX - 5, 0, OldX + 5, BmpV.Height),
   BmpV.Canvas, Rect(0,0,BmpV.Width,BmpV.Height));
   Image.Canvas.CopyRect(Rect(0, OldY - 5, BmpH.Width, OldY + 5),
   BmpH.Canvas, Rect(0,0,BmpH.Width,BmpH.Height));
   BmpH.Free;
   BmpV.Free;
 end;
 // Now save the image at new position for each line
 // horizontal line
 BmpH := TBitmap.Create;
 BmpH.Width := Image.Width;
 BmpH.Height := 10;
 BmpH.Canvas.CopyRect(Rect(0,0,BmpH.Width,BmpH.Height),
 Image.Canvas,Rect(0, Y - 5, BmpH.Width, Y + 5));
 // Vertical line
 BmpV := TBitmap.Create;
 BmpV.Width := 10;
 BmpV.Height := Image.Height;
 BmpV.Canvas.CopyRect(Rect(0,0,BmpV.Width,BmpV.Height),
                Image.Canvas,Rect(X - 5, 0, X + 5, BmpV.Height));

 // Now draw the current position
 Image.Canvas.MoveTo(0, Y);
 Image.Canvas.LineTo(Image.Width, Y);
 Image.Canvas.MoveTo(X, 0);
 Image.Canvas.LineTo(X, Image.Height);

 RectSaved := true;
 OldX := X;
 OldY := Y;

 LabelHint.Left := X + 36;
 LabelHint.Top := Y - 15;
 LabelHint.Caption := '(X:' + IntToStr(X) + ' x Y:' + IntToStr(Y) +')';
end;






Просмотров: 2571

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную