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=4020)

Kurdt 27.07.2007 18:18

Посоветуйте выбрать алгоритм
 
Я щас написал библиотеки для мп и програму для винды чтобы можно было создавать и потключать и отрисовывать любые шрифты с учетом ширины символов... есть перенос по словам печать в прямоугольную область.. разбивка на строки и все удобства... но я вот все таки не знаю какой для телефона сделать коректнее по производительности
а) создать масив картнок символов 32-255 (как это сделать чтоб прозрачность была в яве???ImageFromImage паскалевкий - не прозрачную выдает...) потом их выводить...
Б) Делать так как я сейчас делаю, это немного не коректно, но работает быстренько довольно... гдето выдает 5 кадров обрисовывания екрана в секунду на 176/220 , принцип работы:
M.G.setClip(x,y,iw,ih);
M.G.drawImage(i, x-ix, y-iy,20);
M.G.setClip(назад возвращаю...);
помоему это очень долго.... и не коректно...
Потому если кто знает помогите значит функцию сделать которая бы возвращала часть картинки... любым способом пусть даже и долгим... либу я скомпилю вы главное код напшите....
я немного смотерел яву но не вышло.. значит надо создать новый грффик имайж потом на него нарисовать картинку в определенном клипе и возвратить полученое изображение...

Kurdt 27.07.2007 19:16

Re: Посоветуйте выбрать алгоритм
 
как изменить этот код чтобы была прозрачность?? было бы неплохо чтоб еше и мидп 1.0 держал бы....

public static Image ii(Image image, int i, int j, int k, int l)
{
try
{
Image image1 = Image.createImage(k, l);
image1.getGraphics().drawImage(image, -i, -j, 20);
return image1;
}
catch(Exception exception)
{
return Image.createImage(1, 1);
}
}



drawImage
Draws the specified image by using the anchor point. The image can be drawn in different positions relative to the anchor point by passing the appropriate position constants. See anchor points.
If the source image contains transparent pixels, the corresponding pixels in the destination image must be left untouched. If the source image contains partially transparent pixels, a compositing operation must be performed with the destination pixels, leaving all pixels of the destination image fully opaque.

Рисует указанное изображение, используя донную точку. Изображение может рисоваться в различных положениях относительно донной точки, проходя подходящие константы положения. Посмотрите донные точки.
Если начальное изображение содержит понятные пиксели, соответственные пиксели в изображении назначения должны быть оставлены нетронутыми. Если начальное изображение содержит частично понятные пиксели, действие compositing должно выполняться с пикселями назначения, оставляя все пиксели изображения назначения полностью темнота.

что это означает?

Пока использую Image image1 = Image.createImage(image,i,j,k,l,0);
Но это уже мидп 2.0, а хочется создать универсальную вешь...

ViNT 28.07.2007 02:30

Re: Посоветуйте выбрать алгоритм
 
А если шрифт рисовать с прозрачным фоном?

Kurdt 28.07.2007 23:47

Re: Посоветуйте выбрать алгоритм
 
Цитата:

Сообщение от ViNT
А если шрифт рисовать с прозрачным фоном?

Так я ж с прозрачным фоном и делаю.... Image image1 = Image.createImage(image,i,j,k,l,0); вот так работает только ужасно тупит на телефонах когда идет загрузка... гдет секунд 30 грузит 255 рсунков... и это мидп 2.0
Можно рисовать с использованием сетклип, но это тоже медленовато и не коректно...

Piligrim 30.07.2007 11:53

Re: Посоветуйте выбрать алгоритм
 
M.G.setClip(назад возвращаю...); делай только в конце вывода всей строки.По производительности быстрее будет метод А, но по расходу памяти метод Б. Для копирования с сохранением прозрачности можно использовать разложение Image на rgb

Eddy 31.07.2007 15:39

Re: Посоветуйте выбрать алгоритм
 
M.G.setClip(x,y,iw,ih);
M.G.drawImage(i, x-ix, y-iy,20);
в midp2 быстрее будет drawregion

Piligrim 01.08.2007 12:38

Re: Посоветуйте выбрать алгоритм
 
не факт. многие ява машины реализуют drawRegion именно через setClip, чтобы не думать.

Kurdt 01.08.2007 15:45

Re: Посоветуйте выбрать алгоритм
 
Спасиб. тогда сдеаю через драв реджин
Просто с использованием сетклип может возникнуть с основным циклом работы рограммы, когда нужно вывести например какуето месагу и чтоб текст не выводился за краи......

только что попробовал драврежин не работает на большинстве телефонов, даже на моем к750 не работает... на эмуляторах мидпикс и сановском работает отлмчно...
public static Image im(Image image, int i, int j, int k, int l)
{
try
{
Image image1 = Image.createImage(k, l);//(image,i,j,k,l,0);
image1.getGraphics().drawRegion(image,i,j,k,l,0,0, 0,20);

return image1;
}
catch(Exception exception)
{
return Image.createImage(1, 1);
}
}
public static void drawregion (Image image, int i, int j, int k, int l,int x,int y){

M.G.drawRegion(image,i,j,k,l,0,x,y,0);

}

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

сделаю по другому методу, хотя он не очен коректени ресурсоемк

Kurdt 01.08.2007 17:27

Re: Посоветуйте выбрать алгоритм
 
сделал еше одну функцию... она тоже копирует без прозрачности :-(((

public static Image im2(Image image, int i, int j, int k, int l)
{
try
{
Image image1 = Image.createImage(k, l);//(image,i,j,k,l,0);
image1.getGraphics().drawImage(image, -i , j, 20);

return image1;
}
catch(Exception exception)
{
return Image.createImage(1, 1);
}
}

Хотя если заменитьimage1.getGraphics().drawImage(image, -i , j, 20);
на
image1.getGraphics().drawRegion(image,i,j,k,l,0,0, 0,20);
то прозрачность есть в процедре, только на телефонах не работает тока на эмуляторах....

Eddy 02.08.2007 21:06

Re: Посоветуйте выбрать алгоритм
 
Вложений: 2
я сделал так
public static void draw_region(Image src,
int x_src,
int y_src,
int width,
int height,
int transform,
int x_dest,
int y_dest,
int anchor)
{
M.G.drawRegion(src, x_src, y_src, width, height, transform, x_dest, y_dest, anchor);
}
переменной anchor надо присвоить 20
у меня прозрачность есть(и на эмуле и на е50)

Kurdt 03.08.2007 01:01

Re: Посоветуйте выбрать алгоритм
 
я точно так делал и 20 тоже... всеравно не работает на большинстве телефонов...

Eddy 03.08.2007 18:00

Re: Посоветуйте выбрать алгоритм
 
Kurdt, попробуй drawreq запустить, если пойдет значит у тебя ошибка где-то.

Eddy 03.08.2007 19:41

Re: Посоветуйте выбрать алгоритм
 
попробывал drawreq на сименсе сх70 - работает - 13 fps
на сонерике в700 - 59 fps


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

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