Конференция "Media" » Перемещение изображения с использованием CopyRect [D6, WinXP]
 
  • 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] доведенный до совершенства и автоматизированный.
 
Конференция "Media" » Перемещение изображения с использованием CopyRect [D6, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]