ВУЗ:
Составители:
Рубрика:
- 14 -
комбинацией имеющегося и наложенного изображения с логическим AND и
др.).
Копировать часть изображения в Карман удобно с помощью внеэкранного
контейнера (необходимое условие применения нижеприведенной функции
суть xLeft<xRight && yTop<yBottom, в противном случае необходима пере-
становка координат – см. функцию ShiftRectCoord в модуле Main.cpp про-
граммы Paint; структура типа TRect представляет описывающие прямоуголь-
ник координаты {xLeft, yTop, xRight, yBottom}):
void __fastcall TForm1::CopyRectToClipboard(int xLeft, int yTop,
int xRight, int yBottom)
{ // копировать прямоугольную часть исходного изображения
// с левым верхним углом (xLeft,yTop) и правым нижним (xRight,tBottom)
TRect rs, rd;
TImage *tmpImage;
tmpImage = new TImage(this); // создать экземпляр объекта TImage
rs = Rect(xLeft,yTop, xRight,yBottom); // область копирования в Image1
rd = Rect(0,0, xRight - xLeft,yBottom - yTop); // область копирования в tmpImage
tmpImage->BoundsRect = rd; // настройка размеров tmpImage
// tmpImage->Width = xRight - xLeft; // та же самая настойка (ширина)
// tmpImage->Height = yBottom - yTop; // … высота
tmpImage->Canvas->CopyRect(rd,Image1->Canvas,rs); // копировать в tmpImage
Clipboard()->Assign(tmpImage->Picture); // копировать из tmpImage в Clipboard
delete tmpImage; // уничтожить tmpImage
}
Частой процедурой перед применением преобразований к части изображе-
ния (копированием в Карман, деформации, цветокоррекцией и др.) является
выделение (прямоугольной) части изображения ‘резиновой рамкой’, пере-
мещаемой по экрану при манипуляциях мышью. Проблемой при этом явля-
ется необходимость восстановления (после каждого перемещения мыши)
части изображения, ‘испорченного’ перемещающейся рамкой. Стандартным
приемом является копирование
прямоугольного участка изображения перед
каждым перемещением правого нижнего угла рамки (левый верхний считает-
ся зафиксированным щелчком кнопки мыши) во внеэкранный образ и вос-
становление этой части изображения после смещения рамки.
В рассматриваемой программе Pain (модуль Main.cpp проекта Paint.bpr):
• функция Image1MouseDown (вызываемая по событию Image1MouseDown –
‘нажатие кнопки мыши’) запоминает (передаваемые через формальные па-
раметры)
координаты левой верхней точки рамки в переменных InitialX,
InitialY, создает внеэкранный контейнер tmpImage и копирует в него изо-
бражение,
• функция Image1MouseMove (событие Image1MouseMove – ‘перемещение
указателя мыши’) путем вызова отрисовывает ‘резиновую рамку’ и осуще-
комбинацией имеющегося и наложенного изображения с логическим AND и др.). Копировать часть изображения в Карман удобно с помощью внеэкранного контейнера (необходимое условие применения нижеприведенной функции суть xLeftBoundsRect = rd; // настройка размеров tmpImage // tmpImage->Width = xRight - xLeft; // та же самая настойка (ширина) // tmpImage->Height = yBottom - yTop; // … высота tmpImage->Canvas->CopyRect(rd,Image1->Canvas,rs); // копировать в tmpImage Clipboard()->Assign(tmpImage->Picture); // копировать из tmpImage в Clipboard delete tmpImage; // уничтожить tmpImage } Частой процедурой перед применением преобразований к части изображе- ния (копированием в Карман, деформации, цветокоррекцией и др.) является выделение (прямоугольной) части изображения ‘резиновой рамкой’, пере- мещаемой по экрану при манипуляциях мышью. Проблемой при этом явля- ется необходимость восстановления (после каждого перемещения мыши) части изображения, ‘испорченного’ перемещающейся рамкой. Стандартным приемом является копирование прямоугольного участка изображения перед каждым перемещением правого нижнего угла рамки (левый верхний считает- ся зафиксированным щелчком кнопки мыши) во внеэкранный образ и вос- становление этой части изображения после смещения рамки. В рассматриваемой программе Pain (модуль Main.cpp проекта Paint.bpr): • функция Image1MouseDown (вызываемая по событию Image1MouseDown – ‘нажатие кнопки мыши’) запоминает (передаваемые через формальные па- раметры) координаты левой верхней точки рамки в переменных InitialX, InitialY, создает внеэкранный контейнер tmpImage и копирует в него изо- бражение, • функция Image1MouseMove (событие Image1MouseMove – ‘перемещение указателя мыши’) путем вызова отрисовывает ‘резиновую рамку’ и осуще- - 14 -
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »