Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двигаем крестик для показа значений X/Y 
:(
    Опции темы
Poseidon
Дата 19.5.2005, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: нет
Всего: 133



Код
// 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; 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.