-
alex300474 (16.12.08 14:19) [0]Пишу графический редактор, для перемещения изображения использую:
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 . В этом примере таже проблемма.
Я потратил уже много времени, моей компетенции не хватает, прошу помощи.
Заранее благодарен,Алексей. -
KilkennyCat © (16.12.08 16:36) [1]Сохрани исходное изображение в буфер. Его и двигай, копируя туда, куда надо, и сколько надо. Таким образом, ты его не обрежешь.
-
alex300474 (16.12.08 19:26) [2]А каков механизм этого обрезания? Такое складывается впечатление что параметры (высота,ширина) не устанавливаются, т.е. устанавливаются но для области меньшей чем первая.
-
Eraser © (16.12.08 20:11) [3]> [0] alex300474 (16.12.08 14:19)
лучше для перемещения используй отдельный компонент TImage, удобнее будет и возможностей больше. -
KilkennyCat © (16.12.08 23:06) [4]
> А каков механизм этого обрезания?
> OriginX,OriginY,OriginX+image2.Width,OriginY+image2.Height) -
KilkennyCat © (16.12.08 23:14) [5]и вообще, странно все выглядит.
Создай два TRect, нормально пропиши вычисление их координат, тогда все и увидишь. В твоем оригинале думать сложно, особенно когда в имадже1 используются координаты имадже2... читабельный вариант будет выглядеть так:ImageReceiver.Canvas.CopyRect(RectReceiver, ImageTransmitter.Canvas, RectTransmitter);
и ищи ошибку в вычислении RectTransmitter, локализация точнее и не надо будет грешить на CopyRect -
Омлет (17.12.08 22:58) [6]> Eraser © (16.12.08 20:11) [3]
> лучше для перемещения используй отдельный компонент TImage, удобнее будет и возможностей больше.
Я бы не советовал )) -
Eraser © (19.12.08 16:35) [7]> [6] Омлет (17.12.08 22:58)
аргументируй.
использование TImage это по-сути [5] доведенный до совершенства и автоматизированный.