Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с изображениями в С++ Builder 
V
    Опции темы
LionMdS
  Дата 28.3.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

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



Вопрос звучит следующим образом:

Есть форма, на ней карта разрешения 15000х12000.
Просматривать можно с помощью ScrollBar.
Как обработать функцию OnMouseDown, чтобы можно было осуществлять навигацию с помощью мыши???

Заранее благодарю!
PM MAIL   Вверх
CaLaT
Дата 28.3.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Попробуй сделать флаг на ОнМаусДаун, а само перемещение на ОнМаусМув
PM MAIL   Вверх
LionMdS
Дата 28.3.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 28.3.2009

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



Каким способом???
SC_DRAGMOVE = 0xF012 таскает всю форму.
PM MAIL   Вверх
CaLaT
Дата 28.3.2009, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Слушай, ну самое тупое что пришло в голову:

Код

bool Lock;
POINT thisPoint, pressedPoint, imgDefaultPos;
...
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
                GetCursorPos(&pressedPoint);
                Lock=true;
                imgDefaultPos.y=Image1->Top;
                imgDefaultPos.x=Image1->Left;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
                Lock=false;        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        if(Lock)
        {
        GetCursorPos(&thisPoint);
        Image1->Left=imgDefaultPos.x+thisPoint.x-pressedPoint.x;
        Image1->Top=imgDefaultPos.y+thisPoint.y-pressedPoint.y;
        }
}
//---------------------------------------------------------------------------



Я думаю, ща люди что-нибудь более дельное посоветуют)

Это сообщение отредактировал(а) CaLaT - 28.3.2009, 22:57
PM MAIL   Вверх
CaLaT
Дата 29.3.2009, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 29.6.2008
Где: Город родной - Пи тер я твой!

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



Или вот еще универсальный способ вспомнил, только здесь при нажатии альт и клике реализованно
Код

void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 Panel1->OnMouseDown(Panel1, Button, Shift, X, Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Shift.Contains(ssAlt))
 {
  ReleaseCapture();
  ((TControl *)Sender)->Perform(WM_SYSCOMMAND,0xF012, 0);
 }
}


Image Расположен на Panel
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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