![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 18
|
Интуитивно понимаю, что должно решаться как-то просто, но как - не пойму.
Есть картинка jpeg - рисунок на черном (0x000000) фоне. После runtime загрузки этой картинки в Image необходимо черный фон сделать прозрачным. Как? |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
BitmapData.
thresold. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 18
|
Пршу прощения, а можно конкретную строчку кода? Ведь не так много прошу.
|
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
/**
* @author ivan.dembicki@gmail.com
*/
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
public class ThreshholdSample extends Sprite {
public static function addTransparency(bmp : BitmapData, transparentColor : uint = 0) : BitmapData {
const newBmp:BitmapData = new BitmapData(bmp.width, bmp.height, true);
newBmp.draw(bmp);
newBmp.threshold(newBmp, bmp.rect, new Point(), "==", transparentColor);
return newBmp;
}
private static const PICTURE_URL : String = "dimpiax.png";
private static const TRANSPARENT_COLOR : uint = 0xFFF1F1EF;
private const pictureLoader : Loader = new Loader();
public function ThreshholdSample() {
initInstance();
}
private function initInstance() : void {
addChild(pictureLoader);
pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPictureLoaded);
const request : URLRequest = new URLRequest(PICTURE_URL);
const context : LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
pictureLoader.load(request, context);
}
private function onPictureLoaded(event : Event) : void {
const picture : Bitmap = pictureLoader.content as Bitmap;
picture.bitmapData = addTransparency(picture.bitmapData, TRANSPARENT_COLOR);
}
}
}
Последний раз редактировалось Iv; 05.03.2008 в 16:37. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 18
|
Положил Image, назвал img1, откорректировал соответственно для своей картинки PICTURE_URL и TRANSPARENT_COLOR, добавил пследней строчкой в onPictureLoaded следующее:
Application.application.img1.source = picture; - не работает. Картинка выводится как есть, без прозрачности. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Application.application.img1.source = picture;
- очень загадочна эта строка без остального кода. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 18
|
вот собственно и весь код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="Init()">
<mx:Script>
<![CDATA[
import src.ThreshholdSample;
private function Init():void{
new ThreshholdSample();
}
]]>
</mx:Script>
<mx:Image id="img1" width="350" height="205"/>
</mx:Application>
// ActionScript file
package src{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import mx.core.Application;
// @author ivan.dembicki@gmail.com
public class ThreshholdSample extends Sprite {
public static function addTransparency(bmp : BitmapData, transparentColor : uint = 0) : BitmapData {
var newBmp:BitmapData = new BitmapData(bmp.width, bmp.height, true);
newBmp.draw(bmp);
newBmp.threshold(newBmp, bmp.rect, new Point(40,40), "==", transparentColor);
return newBmp;
}
private static const PICTURE_URL : String = "fishka_light_default.jpg";//"dimpiax.png";
private static const TRANSPARENT_COLOR : uint = 0x000000;
private const pictureLoader : Loader = new Loader();
public function ThreshholdSample() {
initInstance();
}
private function initInstance() : void {
addChild(pictureLoader);
pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onPictureLoaded);
const request : URLRequest = new URLRequest(PICTURE_URL);
const context : LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
pictureLoader.load(request, context);
}
private function onPictureLoaded(event : Event) : void {
const picture : Bitmap = pictureLoader.content as Bitmap;
const bmp : BitmapData = picture.bitmapData;
picture.bitmapData = addTransparency(bmp, TRANSPARENT_COLOR);
Application.application.img1.source = picture;
}
}
}
Последний раз редактировалось Utes; 05.03.2008 в 20:01. |
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Попробуй пример без использования Flex - создай рядом с ThreshholdSample FLA файл и руту назначь класс ThreshholdSample.
Проверь, правильно ли ты указал цвет. Он должен содержать альфу. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 18
|
А вот и собственно картинка.
|
|
|||||
|
Регистрация: Dec 2007
Сообщений: 269
|
для такой картинки наверное просто blendMode = "screen" подойдет
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:49. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|