Е, проблемът може да е прост, но не мога да го разбера. Имам изображение, заредено в BitmapData. сега искам да взема текст от textinput и да го поставя в BitmapData. По принцип това е изчертаване на текст върху BitmapData и получаване на резултата като друг BitmapData, който ще се състои от оригиналния BitmapData с текст, начертан върху него на определена позиция. Какъв е най-добрият начин да постигнете това във flex?
Начертайте текст върху BitmapData във Flex
comment
Опитвате ли се да поставите воден знак/промените самото оригинално изображение или просто да покажете някакъв текст върху изображението във вашето приложение?
- person Jason Towne   schedule 21.05.2011
comment
Не точно воден знак. Просто искам да добавя текста върху BitmapData и да го запазя като напълно ново изображение (с изображението и текста). Така че да, променете оригиналното изображение, като добавите текст към него.
- person redGREENblue   schedule 21.05.2011
Отговори (2)
За да поставите текста в растерно изображение, можете да направите:
var channelName:TextField = new TextField();
channelName.textColor=0x000000;
channelName.antiAliasType = AntiAliasType.NORMAL;
channelName.alpha=1.0;
var txtFormat:TextFormat = new TextFormat("SansSerif",14,0x000000,true);
channelName.setTextFormat(txtFormat);
var bitmapdata:BitmapData = new BitmapData(
channelName.width, channelName.height, true, 0x000000);
bitmapdata.draw(channelName);
person
alicia
schedule
23.05.2011
Благодаря, работи. Въпреки това, каквото и да правя, текстът се появява в горния ляв ъгъл на изображението Bitamp (0,0), как мога да го накарам да се показва където пожелая върху изображението Bitmapdata?
- person redGREENblue; 23.05.2011
Можете да използвате матрица и метода за превод: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/
- person alicia; 24.05.2011
Не можете да рисувате върху растерни данни за една дума, но можете да ги композирате от данните. Тъй като имате BitmapData, е достатъчно лесно да го промените на растерно изображение (var bitmap:Bitmap = new Bitmap(bitmapData);
) и след това да го добавите като източник за изображение.
След като вече имате действително изображение на сцената, вече можете да добавите текст над него, като използвате каквото искате (текст, етикет, текстово поле и т.н.) и след това можете да направите Bitmap.draw
над размерите на изображението, за да върнете информацията за пикселите в BitmapData (под Bitmap.bitmapData).
person
J_A_X
schedule
20.05.2011
Звучи добре. Възможно е обаче да имам проблем по отношение на моите изисквания с този подход (не съм сигурен обаче). BitmapData е с големи размери и се намалява, когато го заредя в изображение, за да пасне на размерите на изображението. Ако преобразувам това растерно изображение в BitmapData и го запазя, няма ли да е с размерите на изображението (т.е. умалено изображение), как мога да запазя оригиналното измерение в този случай?
- person redGREENblue; 21.05.2011
Опитвали ли сте да добавите контролата на изображението, но не сте задали ширината и височината на контролата?
- person michael; 21.05.2011
да Но проблемът тук е изискването на приложението за зареждане на различни изображения по време на изпълнение. Така че част от изображението може да е с по-висока разделителна способност, която трябва да бъде намалена, за да пасне на областта на изображението, но докато се записва, трябва да се запази в оригиналния размер. Ако не задам ширината/височината на изображението, изображение с по-големи размери ще изтече от зоната за показване, ако мога да го обясня правилно. Какво решение мога да използвам?
- person redGREENblue; 21.05.2011
Какво ще кажете за използването на ImageSnapshot за запазване на компонента.
- person michael; 23.05.2011