Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перемещение изображения с использованием CopyRect [D6, WinXP]


alex300474 ©   (2008-12-16 14:19:00) 

Пишу графический редактор, для перемещения изображения использую:
image2.Canvas.CopyRect(Rect(0,0,image2.Width,image2.Height),
       image1.Canvas,Rect(OriginX,OriginY,OriginX+image2.Width,OriginY+image2.Height));
При первом перемещении всё работает. При последующих, в сдвигаемой области отображается не всё выделенное изображение, причём размер изображения в сдвигаемой области ограничен размером выделенным при первом перемещении. Пример сдвига изображения повзаимствовал из примера: http://blackman.hoha.ru/primer/2204/paintbrush.zip. В этом примере таже проблемма.
Я потратил уже много времени, моей компетенции не хватает, прошу помощи.
Заранее благодарен,Алексей.


Eraser   (2008-12-19 16:35:00) [1]

> [6] Омлет   (17.12.08 22:58)

аргументируй.
использование TImage это по-сути [5] доведенный до совершенства и автоматизированный.


Омлет   (2008-12-17 22:58:00) [2]

> Eraser ©   (16.12.08 20:11) [3]
> лучше для перемещения используй отдельный компонент TImage, удобнее будет и возможностей больше.

Я бы не советовал ))


KilkennyCat   (2008-12-16 23:14:00) [3]

и вообще, странно все выглядит.
Создай два TRect, нормально пропиши вычисление их координат, тогда все и увидишь. В твоем оригинале думать сложно, особенно когда в имадже1 используются координаты имадже2... читабельный вариант будет выглядеть так:
ImageReceiver.Canvas.CopyRect(RectReceiver, ImageTransmitter.Canvas, RectTransmitter);
и ищи ошибку в вычислении RectTransmitter, локализация точнее и не надо будет грешить на CopyRect


KilkennyCat   (2008-12-16 23:06:00) [4]


> А каков механизм этого обрезания?


> OriginX, OriginY,OriginX+image2.Width,OriginY+image2.Height)


Eraser   (2008-12-16 20:11:00) [5]

> [0] alex300474   (16.12.08 14:19)

лучше для перемещения используй отдельный компонент TImage, удобнее будет и возможностей больше.


alex300474   (2008-12-16 19:26:00) [6]

А каков механизм этого обрезания? Такое складывается впечатление что параметры (высота,ширина) не устанавливаются, т.е. устанавливаются но для области меньшей чем первая.


KilkennyCat   (2008-12-16 16:36:00) [7]

Сохрани исходное изображение в буфер. Его и двигай, копируя туда, куда надо, и сколько надо. Таким образом, ты его не обрежешь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо