Показать сообщение отдельно
Старый 29.03.2010, 13:48   #2
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Копирование прямоугольной области с текущего изображения на дисплее.

Такого изящного копирования не знаю. Знаю такой: рисуешь всё не в графикс канваса, а в графикс рисунка.
Создаём картинку и задаём координаты начальной точки, откуда копировать:
int grabX = 20;
int grabY = 50;
int width = 100;
int height = 100;
boolean needGrab = false;
Image image = Image.createImage(width, height);
При установленном флаге needGrab подменяем графикс канваса на графикс рисунка, и делаем сдвиг, чтоб в точку (0,0) рисунка отобразилась точка (grabX, grabY) канваса.
Флаг можно устанавливать по нажатию кнопки или по какому тебе надо условию.
А вот кусок функции рисования канваса:
protected void paint(Graphics g)
{
    if(needGrab == true)
    {
        g = image.getGraphics();
        g.translate(-grabX, -grabY);
        needGrab = false; //одну отрисовку копируем и всё
    }
    //здесь идёт всё что есть по части рисования на канвасе
}
Ну и всё. После прохода с трюшным флагом в рисунок скопируется прамоугольная область канваса {grabX,grabY,width,height}.
(Offline)
 
Ответить с цитированием