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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с CopyRect 
:(
    Опции темы
PsiMagistr
Дата 17.6.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята. Столкнулся с довольно таки странной работой CopyRect. 

1). Есть одно большое изображение. Внутри изображения щелчком мыши выбирается и отрисовывается определенная область, которая должна копироваться в другое изображение. Увы ничего не происходит. Но как только мы хотим не копировать не в другое изображение,  а в область формы, все работает как по маслу.

Код


procedure TForm1.ImMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var Number:Integer;
begin
 Number:= x div 128 + IM.Width div 128 * (y div 83);  //Вычисляем номер прямоугольника в котором мы находимся.

  L1 := 128*(x div 128);  //Заполняем координаты
  T1:= 83*(y div 83);
  L2:= L1+128;
  T2:= T1+83;

  SB.SimpleText := 'Квадрат: ' + IntToStr(Number); //Выводим номер прямоугольника в строку состояния.
  end;

procedure TForm1.ImClick(Sender: TObject);
var R1,R2:TRect; //Области копирования.
begin

   Im.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'map2.bmp'); //Грузим файл.
   Im.Canvas.Brush.Style := bsClear; //Очищаем кисть
   Im.Canvas.Rectangle(L1,T1,L2,T2); //Рисуем прямоугольник на карте.

   R1:=Rect(0,424,128,507); //Определяем область куда хотим копировать.
   R2:= Rect(L1,T1,L2,T2);  //Определяем область откуда хотим копировать.

   //Im2.Canvas.CopyRect(R1, IM.Canvas, R2);   //Копируем. Не работает. Даже если расскоментировать эту строку и закомментировать последнюю!

   Form1.Canvas.CopyRect(R1, IM.Canvas, R2); //Копируем. Работает как по маслу! С теми же параметрами. Я заменил только объект куда надо копировать.  

end;


P.S. Ребята, я приложу проект на всякий случай. Боюсь, слишком путано все.



Это сообщение отредактировал(а) PsiMagistr - 17.6.2010, 10:12

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Proba.rar 370,58 Kb


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Frees
Дата 17.6.2010, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Код

Im2.Picture.bitmap.Canvas.CopyRect(R1, IM.Canvas, R2);



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
PsiMagistr
Дата 17.6.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо большое. Первый раз слышу, но попробовал. 

Не выходит, увы.

Это сообщение отредактировал(а) PsiMagistr - 17.6.2010, 10:48


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Frees
Дата 17.6.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(PsiMagistr @  17.6.2010,  13:48 Найти цитируемый пост)
Не выходит, увы.

ошибка тут 
Код

 R1:=Rect(0,424,128,507); //Определяем область куда хотим копировать.
   R2:= Rect(L1,T1,L2,T2);  //Определяем область откуда хотим копировать.


если сделать 
Код

 R1:=Rect(0,0,128,128); //Определяем область куда хотим копировать.
   R2:= Rect(0,0,128,128);  //Определяем область откуда хотим копировать.

то рисуется

думай дальше над определением координат

Добавлено через 3 минуты и 44 секунды
Код

   R1:=Rect(0,0,128,83); //Определяем область куда хотим копировать.
   R2:= Rect(L1,T1,L2,T2);  //Определяем область откуда хотим копировать.
   Im.Canvas.Rectangle(R2);
   Im2.Canvas.CopyRect(R1, IM.Canvas, R2);



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
PsiMagistr
Дата 17.6.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Но прямоугольник с тем же координатами на форме прорисовываются спокойно. Причем точнехонько в том месте, куда я image поставил.


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Frees
Дата 17.6.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(PsiMagistr @  17.6.2010,  14:09 Найти цитируемый пост)
Причем точнехонько в том месте, куда я image поставил.

это потому что если рисовать на форме то координаты начинаются в левом вехнем углу формы, а если рисовать на Image то его координаты тоже начинаются слева в верху, но не формы а самого Image. поэтому координаты для формы и image разные( смотри код выше)

Это сообщение отредактировал(а) Frees - 17.6.2010, 11:13


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
PsiMagistr
Дата 17.6.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Frees, БИГ СЕНКС. Отредактировал

Если человек - дурак, то это - надолго. Это я про себя).


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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