forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JAVA Micro Edition (http://forum.boolean.name/forumdisplay.php?f=52)
-   -   Копирование прямоугольной области с текущего изображения на дисплее. (http://forum.boolean.name/showthread.php?t=12287)

GRAY_WOLF 28.03.2010 20:32

Копирование прямоугольной области с текущего изображения на дисплее.
 
Как в java скопировать часть изображения с дисплея в переменную image по координатам (x1,y1,x2,y2) ? В МР для этих целей есть
PHP код:

function ImageFromCanvas(x1integery1integer;  x2integery2integer): image 


Жека 29.03.2010 13:48

Ответ: Копирование прямоугольной области с текущего изображения на дисплее.
 
Такого изящного копирования не знаю. Знаю такой: рисуешь всё не в графикс канваса, а в графикс рисунка.
Создаём картинку и задаём координаты начальной точки, откуда копировать:
Код:

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}.

odd 05.04.2010 18:17

Ответ: Копирование прямоугольной области с текущего изображения на дисплее.
 
Вот функция по фотографированию части экрана:

PHP код:

public static Image get_image(int xint yint wint h)
{
            
Image im2 null;
            
im2 Image.createImage(wh);
            
im2.getGraphics().drawImage(M.I, -x, -y20);
            return 
im2;



GRAY_WOLF 05.04.2010 22:18

Ответ: Копирование прямоугольной области с текущего изображения на дисплее.
 
Цитата:

Сообщение от odd (Сообщение 144200)
Вот функция по фотографированию части экрана:

PHP код:

public static Image get_image(int xint yint wint h)
{
            
Image im2 null;
            
im2 Image.createImage(wh);
            
im2.getGraphics().drawImage(M.I, -x, -y20);
            return 
im2;



А как на счет этой функции?

PHP код:

public static Image ii(Image imageint iint jint kint l)
    {
        try
        {
            
Image image1 Image.createImage(kl);
            
image1.getGraphics().drawImage(image, -i, -j20);
            return 
image1;
        }
        catch(
Exception exception)
        {
            return 
Image.createImage(11);
        }
    }

    public static 
Image ii(int iint jint kint l)
    {
        return 
ii(M.Iijkl);
    } 

Она аналогична предыдущей?

odd 10.04.2010 01:13

Ответ: Копирование прямоугольной области с текущего изображения на дисплее.
 
Да, причем более безопасная. В случае глюка вместо снимка получишь картинку 1*1 пиксел.


Часовой пояс GMT +4, время: 18:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot