Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как конвертнуть textField в Bitmap? (http://www.flasher.ru/forum/showthread.php?t=142814)

inMashine 31.07.2010 16:20

Как конвертнуть textField в Bitmap?
 
Добрый день.
Возникла потребность перевезти текст в картинку.
Раньше я это делал так: выделяешь текст и жмешь "Ctr+B B".
Наверняка то же самое можно сделать програмно.
Кто знает плз подскажите.

etc 31.07.2010 16:25

Программно вы этого не можете сделать. Более того, Ctrl+B не делает Bitmap из текста.

inMashine 31.07.2010 16:27

Не так написал: "Ctrl+B" два раза.
Может я не так выразился.
Вот код:
Код AS3:

var txt:TextField = new TextField();
txt.text = "wertwert";
txt.alpha = 0.4;
addChild(txt);

txt.alpha = 0.4; - эта строка не работает.
alpha у текста не может принимать промежуточных значений (только 0 или 1)
Более того, если изменять альфа у контейнера (клипа), в котором находится текст,
альфа контейнера будет изменяться, а альфа текста - будет только 1 или 0.

Ну ведь наверняка это можно поправить.

etc 31.07.2010 16:33

Вообще-то текст так и остается векторным, даже после второго Ctrl+B.
Строчка не работает, потому что вам нужно внедрить символы шрифта в swf, чтобы была возможность задавать прозрачность тексту. Как внедрять шрифты, написано в FAQ на форуме.

inMashine 31.07.2010 17:17

Цитата:

У поля есть только свойство embedFonts. Оно или true или false. Если необходимые шрифты в ролике есть, то они будут использованы при embedFonts = true. Если нет, то при true символы данного шрифта не будут показаны.
А как необходимые шрифты добавить в ролик?

Кто знает - скажите плз, я прочитал FAQ, может я слепой, но по поводу програмного текст филда там ничего не сказано:

Цитата:

Шрифты заменяются только если у вас динамическое поле, чтобы это не происходило надо внедрить шрифты в swf. Для этого надо выбрать текстовое и в панели его свойств нажать кнопку Embed, после чего указать необходимый диапазон символов (можно необходимые символы вбить вручную). Например Cyrillic (не выбирайте All, так как будут внедрены все символы шрифта, а это могут мегабайты лишнего веса)
А что делать, если текстовое поле создается програмно?

-De- 01.08.2010 01:10

Ээ мож я чо не понял про конвертацию, но вполне ж всё в битмап загоняется.
Код AS3:

var field:TextField = new TextField();
                        field.text = "lalala";
                        var b:Bitmap = new Bitmap(new BitmapData(300, 300));
                        b.bitmapData.draw(field);
                        addChild(b);

По добавке шрифта надо гуглить as3 font embed (как это ни странно).
http://www.funky-monkey.nl/blog/2008...edding-in-as3/

inMashine 01.08.2010 16:14

Спасибо.

Zebestov 01.08.2010 17:20

Цитата:

Сообщение от etc (Сообщение 926156)
Программно вы этого не можете сделать.

это как это :eek:

etc 03.08.2010 11:59

Цитата:

Сообщение от Zebestov (Сообщение 926297)
это как это :eek:

Молча, если речь о break apart. Хотя что именно автор имел ввиду, непонятно.

incvizitor 03.08.2010 12:15

Цитата:

Молча, если речь о break apart. Хотя что именно автор имел ввиду, непонятно.
Можно прорисовать в битмапе, а потом проверяя по пикселю можно найти границы и вырисовывать кривые.

Psycho Tiger 03.08.2010 12:22

Цитата:

Сообщение от incvizitor (Сообщение 926697)
Можно прорисовать в битмапе, а потом проверяя по пикселю можно найти границы и вырисовывать кривые.

Извратится и выкрутится можно всегда. Другое дело, что неюзабельно.

incvizitor 03.08.2010 14:34

Psycho Tiger, а Вы думаете что это очень трудно, или что жрёт много процессора?

Не знаю как для второй части, но для нахождения границ не верные оба заявления. Топикстартер говорит что ему нужно, я пишу возможное решение проблемы. А так у Вас критика решения без альтернативы решению.

Psycho Tiger 03.08.2010 15:15

Если быть точным я уверен, что это сложно. Шрифтов 1000, сможет ли Ваш алгоритм определить правильно определить границы каждого?

Я придержусь мнения, что топикстартеру это нафиг ненужно.

incvizitor 03.08.2010 15:46

Не знаю нужно это ему или нет, но спросил он это.

Любой текст фиелд и вообще любое графическое изображение рисуем в прозрачной битмапдате с двойным for пробегаемся по каждому пикселю. если данный пиксель не прозрачен, тогда ищем вокруг него прозрачный. Если хотя бы один нашли - это граница изображения. Каждый граничащий пиксель забиваем в массив. После этого находим самый левый, верхний пункт. С теоремой Пифагора высчитываем растояние до ближайщего пункта, и таким образом сортируем массив. Я говорю Вам, это просто смешной код.

Psycho Tiger 03.08.2010 16:31

Ок, а дальше? Буква "О" будет иметь внутреннюю и внешнюю границу, в итоге буква "О" будет перерезана где то. Лишняя линия.

incvizitor 03.08.2010 16:49

Ну мне это нужно было что бы вырисовывать изображение по точке с таймером.

В случае с кривыми можно просто задать расстояние после которого будет начинаться новая кривая. Правда в случае, например, с китайскими иероглифами, или чем то похожим, могут возникнуть некоторые проблемы. Можно заранее зумировать изображение для получения большей точности. Точность обратно пропорциональна производительности. Короче если руки дойдут и получиться что то путное скину Вам в личку, или напишу свой первый пост в блоге =)

Добавлено через 2 часа 15 минут
К слову: не знаю вообще с чего мне в голову влезли эти кривые =) "Ctrl + B" два раза преобразует текстфиелд в шейпы, что реализовать еще проще =)

Psycho Tiger 03.08.2010 19:15

Речь шла как раз о повторе динамик текста Ctrl+B, но программно. Я все же верю, что программно это бесполезно.

gloomyBrain 03.08.2010 19:31

Цитата:

Я все же верю, что программно это бесполезно
Почему? Всякие FineReader'ы же как-то работают =) Просто алгоритм будет большой, сложный и плохо обходиться с процессором

Psycho Tiger 03.08.2010 22:35

Я не про это. Я про то, что если есть текстовое поле - оно уже в векторном представлении, и зачем получать это дело в кривых - мне неясно.
Вектор - битмап - вектор, спрашивается зачем.
Разве что топикстартер пишет свой собственный граф. редактор, в чем я сильно сомневаюсь.


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.