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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение картинки, по нажатию и левой клавиши мыши 
:(
    Опции темы
RN3QGA
Дата 23.1.2006, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

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



Здравствуйте. Вопрос таков.
Есть ScrollBar и Image c картинкой.
Использую полосы прокрутки при увеличении Image но это не совсем удобно.
Подскажите как сделать например по MousUp перемещение картинки в направлении движения мыши.
Спасибо.

С перемещением разобрался. smile

А вот с мерцанием никак - не получается избавиться.
Может есть у кого способ.
Спасибо!


Это сообщение отредактировал(а) RN3QGA - 23.1.2006, 09:03
PM MAIL   Вверх
Albinos_x
Дата 23.1.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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





--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 23.1.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Запускаем дельфи. Весь код Unit1 заменяем на
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    bmp:    TBitMap;
    ix, iy: integer;
    sx, sy: integer;
    moving: boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  bmp:=TBitMap.Create;
  bmp.LoadFromFile('C:\1.bmp');
  ix:=0; iy:=0;
  moving:=false;
  DoubleBuffered := true;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Form1.Canvas.Draw(ix, iy, bmp);
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  sx:=X; sy:=Y; moving:=true;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  moving:=false;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if not moving then Exit;
  ix := ix + (X-sx);
  iy := iy + (Y-sy);
  sx:=X; sy:=Y;
  if bmp.Width + ix < Width then ix := Width - bmp.Width;
  if bmp.Height + iy < Height then iy := Height - bmp.Height;
  if ix>0 then ix:=0;
  if iy>0 then iy:=0;
  Repaint;
end;

end.

Добавлено @ 12:01
P.S. Только путь к bmp файлику скорректировать нужно.
PM MAIL   Вверх
RN3QGA
Дата 23.1.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

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



Спасибо за помощь Snowy и AlbinosX.
С перемещением я разобрался , с мерцанием тоже, одно но - если Image на форме, то DoubleBuffered избавляет от мерцания, а если в ScrollBar, то нет. Как быть ?
smile

PM MAIL   Вверх
Albinos_x
Дата 23.1.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



попробуй так :
Код
...
ControlStyle := ControlStyle + [ csOpaque ] ;
...

или так:
Код
...
InvalidateRect( Handle, NIL, FALSE ) ;
...



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
RN3QGA
Дата 23.1.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 28.11.2005
Где: Воронежская обл.

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



Добрый вечер.
Всё, smile с мерцанием тоже разобрался - всем спасибо за помощь.
С уважением RN3QGA.

Это сообщение отредактировал(а) RN3QGA - 23.1.2006, 19:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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