| Package | flash.display |
| Class | public class BitmapData |
| Inheritance | BitmapData Object |
| Implements | IBitmapDrawable |
flash.display.Loader 클래스를 사용해 로드 되는 비트 맵 이미지의 BitmapData 에 액세스 할 수도 있습니다.
이 클래스를 사용하면, 비트 맵의 렌더링 처리를 Flash Player 내부 보기 갱신 routine로부터 분리할 수 있습니다. BitmapData object를 직접 조작하는 것으로 복잡한 이미지를 작성할 수 있으므로, 벡터 데이터의 컨텐츠를 연속적으로 재묘화 하는 프레임 단위의 오버헤드를 피할 수가 있습니다.
BitmapData 클래스의 Methods는, (비트 맵 이외 display object에서는 사용 가능한) 필터를 사용해 설정할 수 없는 것 같은 효과를 지원(support)합니다.
BitmapData object에는, 픽셀 데이터의 배열이 포함되어 있습니다. 이 데이터는, 완전하게 불투명한 비트 맵, 또는 알파 채널 데이터를 포함한 투명한 비트 맵을 표현할 수 있습니다. 어느 종류의 BitmapData object도 32 비트 정수의 버퍼로서 보존됩니다. 각 32 비트 정수는, 비트 맵내의 1 개의 픽셀의 property를 결정합니다.
각 32 비트 정수는, 픽셀의 알파 투명도와 빨강 녹청 (ARGB)의 값을 나타내는 4 개의 8 비트 채널치 (0 ~ 255) 의 편성입니다. (ARGB 값에서는, 최상정도 바이트가 알파 채널치를 나타내, 계속되어 적, 초록, 파랑을 나타냅니다. )
이 4 개의 채널 (알파, 적, 록, 청)은,BitmapData.copyChannel() Methods, 또는 DisplacementMapFilter.componentX 및 DisplacementMapFilter.componentY property로 사용하는 경우에 수치로서 나타내집니다. 이러한 수치는, BitmapDataChannel 클래스의 다음의 정수에 의해 나타내집니다.
BitmapDataChannel.ALPHABitmapDataChannel.REDBitmapDataChannel.GREENBitmapDataChannel.BLUEBitmap object의 bitmapData property를 사용하면, BitmapData object를 Bitmap object에 관련지을 수가 있습니다.
Graphics.beginBitmapFill() Methods를 사용하면, BitmapData object를 사용해 Graphics object를 전부 칠할 수가 있습니다.
BitmapData object의 최대의 폭과 높이는 2880 픽셀입니다.
BitmapData object의 몇개의 Methods나 property를 호출했을 때에, BitmapData object가 무효인 것이었을 경우 (예를 들어 height == 0 또한 width == 0 의 경우)나, dispose()로 이미 파기된 것이었을 경우는, ArgumentError 에러가 슬로우 됩니다.
See also
| property | 정의 | ||
|---|---|---|---|
![]() | constructor : Object
특정의 object 인스턴스의 클래스 object 또는 constructor 함수에의 참조입니다.
| Object | |
| height : int
[read-only]
비트 맵 이미지의 높이 (픽셀 단위)입니다.
| BitmapData | ||
![]() | prototype : Object
[static]
클래스 또는 함수 object의 prototype object에의 참조입니다.
| Object | |
| rect : Rectangle
[read-only]
비트 맵 이미지의 크기와 위치를 정의하는 구형입니다.
| BitmapData | ||
| transparent : Boolean
[read-only]
비트 맵 이미지가 픽셀 단위의 투명도를 지원(support)할지 어떨지를 정의합니다.
| BitmapData | ||
| width : int
[read-only]
비트 맵 이미지의 폭 (픽셀 단위)입니다.
| BitmapData | ||
| Methods | 정의 | ||
|---|---|---|---|
| BitmapData (width:int , height:int , transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
지정된 폭과 높이로 BitmapData object를 작성합니다.
| BitmapData | ||
| applyFilter (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , filter:BitmapFilter ):void
소스 이미지와 필터 object를 받아, 필터를 적용해 얻을 수 있는 이미지를 생성합니다.
| BitmapData | ||
| clone ():BitmapData
새로운 BitmapData object로서 원의 인스턴스의 클론을 돌려줍니다. 포함되는 비트 맵은 완전히 같은 복사가 됩니다.
| BitmapData | ||
colorTransform (rect:Rectangle , colorTransform:ColorTransform ):void
ColorTransform object를 사용해, 비트 맵 이미지의 특정 area의 칼라치를 조정합니다. | BitmapData | ||
| compare (otherBitmapData:BitmapData ):Object
2 개의 BitmapData object를 비교합니다.
| BitmapData | ||
| copyChannel (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , sourceChannel:uint , destChannel:uint ):void
다른 BitmapData object 또는 현재의 BitmapData object의 1 개의 채널의 데이터를, 현재의 BitmapData object의 채널에 전송 합니다.
| BitmapData | ||
| copyPixels (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void
이미지간의 픽셀 조작 (신장, 회전, 칼라 효과 없음)을 고속으로 실행하는 routine를 제공합니다.
| BitmapData | ||
| dispose ():void
BitmapData object의 포함에 사용되는 메모리를 해방합니다.
| BitmapData | ||
| draw (source:IBitmapDrawable , matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Flash Player 의 벡터 렌 다라를 사용해,
source 표시 object를 비트 맵 이미지상에 묘화 합니다. | BitmapData | ||
| fillRect (rect:Rectangle , color:uint ):void
지정된 ARGB 칼라로 구형 area의 픽셀을 전부 칠합니다.
| BitmapData | ||
| floodFill (x:int , y:int , color:uint ):void
(x, y) 좌표를 시점으로서 소정의 색으로 전부 칠하는 것으로, 이미지의 전부 칠해 처리를 실행합니다.
| BitmapData | ||
| generateFilterRect (sourceRect:Rectangle , filter:BitmapFilter ):Rectangle
BitmapData object, 소스 구형, 필터 object를 지정해,
applyFilter() Methods 호출에 의해 영향을 받는 타겟 구형을 결정합니다. | BitmapData | ||
| getColorBoundsRect (mask:uint , color:uint , findColor:Boolean = true):Rectangle
(
findColor Parameters가 true 로 설정되어 있는 경우) 비트 맵 이미지내의 지정된 색의 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다. 또는, (findColor Parameters가 false 로 설정되어 있는 경우) 지정된 색은 아닌 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다. | BitmapData | ||
| getPixel (x:int , y:int ):uint
BitmapData object의 특정 포인트 (x, y)의 RGB 픽셀치를 나타내는 정수를 돌려줍니다.
| BitmapData | ||
| getPixel32 (x:int , y:int ):uint
알파 채널 데이터와 RGB 데이터를 포함한 ARGB 칼라치를 돌려줍니다.
| BitmapData | ||
| getPixels (rect:Rectangle ):ByteArray
픽셀 데이터의 구형 area로부터 바이트 배열을 생성합니다.
| BitmapData | ||
![]() | hasOwnProperty (name:String ):Boolean
object로 지정된 property가 정의되고 있는지 어떤지를 나타냅니다.
| Object | |
| hitTest (firstPoint:Point , firstAlphaThreshold:uint , secondObject:Object , secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean
1 개의 비트 맵 이미지와 포인트, 구형, 또는 다른 비트 맵 이미지와의 사이에 픽셀 레벨의 히트를 검출합니다.
| BitmapData | ||
![]() | isPrototypeOf (theClass:Object ):Boolean
Object 클래스의 인스턴스가, Parameters로서 지정된 object의 prototype 체인내에 있을지 어떨지를 나타냅니다.
| Object | |
| lock ():void
이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되지 않게, 이미지를 잠급니다.
| BitmapData | ||
| merge (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redMultiplier:uint , greenMultiplier:uint , blueMultiplier:uint , alphaMultiplier:uint ):void
소스 이미지와 타겟 이미지를 채널 마다 브렌드 합니다.
| BitmapData | ||
| noise (randomSeed:int , low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void
랜덤 노이즈를 나타내는 픽셀로 이미지를 전부 칠합니다.
| BitmapData | ||
| paletteMap (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void
최대로 4 개의 칼라 팔레트 데이터 배열 ( 각 채널 마다 1 개의 배열)을 사용해, 이미지내의 칼라 채널치를 매핑 다시 합니다.
| BitmapData | ||
| perlinNoise (baseX:Number , baseY:Number , numOctaves:uint , randomSeed:int , stitch:Boolean , fractalNoise:Boolean , channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
Perlin 노이즈 이미지를 생성합니다.
| BitmapData | ||
| pixelDissolve (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
소스 이미지로부터 타겟 이미지에의 피크세르디조르브, 또는 같은 이미지를 사용한 피크세르디조르브를 실행합니다.
| BitmapData | ||
![]() | propertyIsEnumerable (name:String ):Boolean
지정된 property가 존재해, 열거 가능한가 어떤가를 나타냅니다.
| Object | |
| scroll (x:int , y:int ):void
소정의 (x, y) 픽셀량만 이미지를 스크롤 합니다.
| BitmapData | ||
| setPixel (x:int , y:int , color:uint ):void
BitmapData object의 1 개의 픽셀을 설정합니다.
| BitmapData | ||
| setPixel32 (x:int , y:int , color:uint ):void
BitmapData object의 1 개의 픽셀에 칼라치와 알파 투명도 값을 설정합니다.
| BitmapData | ||
| setPixels (rect:Rectangle , inputByteArray:ByteArray ):void
바이트 배열을 픽셀 데이터의 구형 area로 변환합니다.
| BitmapData | ||
![]() | setPropertyIsEnumerable (name:String , isEnum:Boolean = true):void
루프 처리에 대한 다이나믹 property의 가용성을 설정합니다.
| Object | |
| threshold (sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , operation:String , threshold:uint , color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
지정되었고 귀의치와 비교해 이미지내의 픽셀치를 테스트해, 테스트에 적합한 픽셀에 새로운 칼라치를 설정합니다.
| BitmapData | ||
![]() | toString ():String
지정된 object의 string 표현을 돌려줍니다.
| Object | |
| unlock (changeRect:Rectangle = null):void
이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되도록(듯이), 이미지를 락 해제합니다.
| BitmapData | ||
![]() | valueOf ():Object
지정된 object의 원시적치를 돌려줍니다.
| Object | |
| height | property |
| rect | property |
rect:Rectangle [read-only]비트 맵 이미지의 크기와 위치를 정의하는 구형입니다. 구형의 상단과 좌단은 0 이 됩니다. 폭과 높이는, BitmapData object의 픽셀의 폭 및 높이로 동일해집니다.
Implements public function get rect():Rectangle
| transparent | property |
transparent:Boolean [read-only]
비트 맵 이미지가 픽셀 단위의 투명도를 지원(support)할지 어떨지를 정의합니다. 이 값을 설정할 수 있는 것은, constructor 의 transparent Parameters에 true 를 건네주는 것에 의해 BitmapData object를 작성하는 경우만입니다. BitmapData object를 작성한 후,transparent property의 값이 true 일지 어떨지를 확인하는 것으로써, 이 object가 픽셀마다의 투명도를 지원(support)할지 어떨지를 검사할 수 있습니다.
public function get transparent():Boolean
| width | property |
| BitmapData | () | constructor |
public 함수 BitmapData(width:int , height:int , transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
지정된 폭과 높이로 BitmapData object를 작성합니다. fillColor Parameters에 값을 지정했을 경우, 비트 맵의 모든 픽셀에 그 색이 설정됩니다.
transparent Parameters에 false 를 건네주지 않는 이상 디폴트에서는 비트 맵이 투명으로서 작성됩니다. 불투명의 비트 맵을 작성한 후, 그것을 투명의 비트 맵으로 변경할 수 없습니다. 불투명의 비트 맵에 포함되는 모든 픽셀은, 24 비트의 칼라 채널 정보만을 사용합니다. 비트 맵을 투명하게 정의했을 경우, 모든 픽셀은, 알파 투명 채널을 포함한 32 비트의 칼라 채널 정보를 사용합니다.
BitmapData object의 최대의 폭과 높이는 2880 픽셀입니다. 폭 또는 높이에 2880 보다 큰 값을 지정하면, 새로운 인스턴스는 작성되지 않습니다.
Parameterswidth:int — 비트 맵 이미지의 폭 (픽셀 단위)입니다.
|
|
height:int — 비트 맵 이미지의 높이 (픽셀 단위)입니다.
|
|
transparent:Boolean (default = true) — 비트 맵 이미지가 픽셀 단위의 투명도를 지원(support)할지 어떨지를 지정합니다. 디폴트치는 true (투명)입니다. 완전하게 투명한 비트 맵을 작성하려면 ,transparent Parameters의 값을 true 에,fillColor Parameters의 값을 0x00000000 (또는 0)로 설정합니다. transparent property에 false 를 설정하면, 렌더링의 퍼포먼스가 약간 향상하는 일이 있습니다.
|
|
fillColor:uint (default = 0xFFFFFFFF) — 비트 맵 이미지 area를 전부 칠하는데 사용하는 32 비트 ARGB 칼라치입니다. 디폴트치는 0xFFFFFFFF (흰색)입니다.
|
ArgumentError — 폭 또는 높이가 무효입니다 (0 이하 또는 2880 보다 크다).
|
| applyFilter | () | Methods |
public function applyFilter(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , filter:BitmapFilter ):void 소스 이미지와 필터 object를 받아, 필터를 적용해 얻을 수 있는 이미지를 생성합니다.
이 Methods는 빌트인 필터 object의 동작에 의존합니다 (이 object는, 입력 소스 구형에 의해 영향을 받는 타겟 구형을 결정합니다).
필터를 적용한 후, 결과적으로 얻을 수 있는 이미지는 입력 이미지보다 커지는 일이 있습니다. 예를 들어, BlurFilter 클래스를 사용해 소스 구형 (50,50,100,100)과 타겟 포인트 (10,10)를 애매하게 하면, 타겟 이미지로 변경되는 area는, 가시노 위해(때문에), (10,10,60,60)보다 커집니다. 이것은,applyFilter() 호출시에 내부에서 발생합니다.
sourceBitmapData Parameters의 sourceRect Parameters가 안쪽 area (200 ●x● 200 의 이미지내의 것 (50,50,100,100) 등)인 경우, 필터는,sourceRect Parameters의 외측에 있는 소스 픽셀을 사용해, 타겟 구형을 생성합니다.
sourceBitmapData Parameters로서 지정된 object와 BitmapData object가 같으면, Flash Player 는 object의 일시 복사를 사용해 필터를 실행합니다. 최적인 퍼포먼스를 얻으려면 , 이러한 상황을 피해 주세요.
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
|
|
filter:BitmapFilter — 필터 적용 처리에 사용되는 필터 object입니다. 각각의 종류의 필터에는, 다음과 같은 요건이 있습니다.
|
TypeError — sourceBitmapData, sourceRect, destPoint, 또는 filter 가 null 입니다.
|
|
IllegalOperationError — BitmapData object의 투명도는, 필터 조작과 호환성이 없습니다.
|
See also
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); bmd.applyFilter(bmd, rect, pt, filter); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
| clone | () | Methods |
public function clone():BitmapData 새로운 BitmapData object로서 원의 인스턴스의 클론을 돌려줍니다. 포함되는 비트 맵은 완전히 같은 복사가 됩니다.
반환값BitmapData —
원의 object와 동일한 새로운 BitmapData object입니다.
|
import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(100, 80, true, 0x00000000); var bmd2:BitmapData = bmd1.clone(); bmd1.setPixel32(1, 1, 0xFFFFFFFF); trace(bmd1.getPixel32(1, 1)); // 4294967295 == 0xFFFFFFFF trace(bmd2.getPixel32(1, 1)); // 0 var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 110;
| colorTransform | () | Methods |
public function colorTransform(rect:Rectangle , colorTransform:ColorTransform ):void
ColorTransform object를 사용해, 비트 맵 이미지의 특정 area의 칼라치를 조정합니다. 구형이 비트 맵 이미지의 경계와 일치하는 경우, 이 Methods는 이미지 전체의 칼라치를 변환합니다.
rect:Rectangle — ColorTransform object가 적용되는 이미지의 area를 정의하는 Rectangle object입니다.
|
|
colorTransform:ColorTransform — 적용되는 칼라 변환치를 기술하는 ColorTransform object입니다.
|
TypeError — rect 또는 colorTransform 이 null 입니다.
|
See also
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.ColorTransform; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000); var cTransform:ColorTransform = new ColorTransform(); cTransform.alphaMultiplier = 0.5 var rect:Rectangle = new Rectangle(0, 0, 40, 30); bmd.colorTransform(rect, cTransform); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
| compare | () | Methods |
public function compare(otherBitmapData:BitmapData ):Object 2 개의 BitmapData object를 비교합니다. 2 개의 BitmapData object의 크기 (폭과 높이)가 같으면, Methods는 새로운 BitmapData object를 돌려줍니다. 이 새로운 object의 각 픽셀은, 2 개의 소스 object의 픽셀간의 「차분」입니다.
예를 들어, 다음과 같은 2 개의 BitmapData object가 있다고 합니다.
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = bmd1.compare(bmd2);
메모: 2 개의 BitmapData object를 전부 칠하기 위해서(때문에) 사용되는 각각의 색의 RGB 값는 조금 다릅니다 (0xFF0000 로 0xFFAA00). compare() Methods의 결과로서 새로운 BitmapData object가 생성되어 그 각 픽셀은 2 개의 비트 맵간의 RGB 값의 차분을 나타냅니다.
다음과 같은 2 개의 BitmapData object가 있다고 합니다. 양자의 RGB 칼라는 같습니다만, 알파치는 다릅니다.
var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = bmd1.compare(bmd2);
compare() Methods의 결과로서 새로운 BitmapData object가 생성되어 그 각 픽셀은 2 개의 비트 맵간의 알파치의 차분을 나타냅니다.
BitmapData object가 동일한 (폭과 높이, 및 픽셀치가 같은) 경우, 이 Methods는 수치 0 을 돌려줍니다.
BitmapData object의 폭이 동일하지 않은 경우, 높이가 같으면, 이 Methods는 수치 -3 를 돌려줍니다.
BitmapData object의 높이가 동일하지 않은 경우, 폭이 같으면, 이 Methods는 수치 -4 를 돌려줍니다.
다음의 예에서는, 폭이 다른 2 개의 Bitmap object를 비교합니다 (각각의 폭은 50 으로 60).
var bmd1:BitmapData = new BitmapData(100, 50, false, 0xFFFF0000); var bmd2:BitmapData = new BitmapData(100, 60, false, 0xFFFFAA00); trace(bmd1.compare(bmd2)); // -3
otherBitmapData:BitmapData — 소스 BitmapData object라고 비교되는 BitmapData object입니다.
|
Object —
2 개의 BitmapData object의 크기 (폭과 높이)가 같으면, 이 Methods는, 2 개의 object간의 차분을 나타내는 새로운 BitmapData object를 돌려줍니다 (주된 설명의 항을 참조해 주세요). 2 개의 BitmapData object가 동일한 경우, 이 Methods는 수치 0 을 돌려줍니다. BitmapData object의 폭이 동일하지 않은 경우, Methods는 수치 -3 를 돌려줍니다. BitmapData object의 높이가 동일하지 않은 경우, Methods는 수치 -4 를 돌려줍니다.
|
TypeError — otherBitmapData 이 null 입니다.
|
import flash.display.Bitmap; import flash.display.BitmapData; var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFFAA00); var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCFFAA00); var diffBmpData:BitmapData = BitmapData(bmd1.compare(bmd2)); var diffValue:String = diffBmpData.getPixel32(1, 1). toString(16); trace (diffValue); // 33ffffff var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 60;
| copyChannel | () | Methods |
public function copyChannel(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , sourceChannel:uint , destChannel:uint ):void 다른 BitmapData object 또는 현재의 BitmapData object의 1 개의 채널의 데이터를, 현재의 BitmapData object의 채널에 전송 합니다. 타겟 BitmapData object내의 그 외의 체르의 데이터는 모두 유지됩니다.
소스 채널의 값과 타겟 채널의 값은, 다음의 어느 쪽인가에 됩니다.
BitmapDataChannel.REDBitmapDataChannel.GREENBitmapDataChannel.BLUEBitmapDataChannel.ALPHAsourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData object를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 소스측의 Rectangle object입니다. 비트 맵내의 것보다 작은 area의 채널 데이터만을 복사하려면 , BitmapData object의 크기 전체보다 작은 소스 구형을 지정합니다.
|
|
destPoint:Point — 새로운 채널 데이터가 배치되는 구형 area의 좌상구석을 나타내는 타겟 Point object입니다. 어느 특정의 area의 채널 데이터만을 타겟 이미지내의 다른 area에 복사하려면 , (0,0) 이외의 포인트를 지정합니다.
|
|
sourceChannel:uint — 소스 채널입니다. BitmapDataChannel 클래스의 값 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN,BitmapDataChannel.ALPHA)을 사용합니다.
|
|
destChannel:uint — 타겟 채널입니다. BitmapDataChannel 클래스의 값 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN,BitmapDataChannel.ALPHA)을 사용합니다.
|
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.
|
See also
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd:BitmapData = new BitmapData(100, 80, false, 0x00FF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd.copyChannel(bmd, rect, pt, BitmapDataChannel.RED, BitmapDataChannel.BLUE); var bm:Bitmap = new Bitmap(bmd); this.addChild(bm);
| copyPixels | () | Methods |
public function copyPixels(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , alphaBitmapData:BitmapData = null, alphaPoint:Point = null, mergeAlpha:Boolean = false):void 이미지간의 픽셀 조작 (신장, 회전, 칼라 효과 없음)을 고속으로 실행하는 routine를 제공합니다. 이 Methods는, 소스 이미지의 구형 area를, 타겟 BitmapData object의 타겟 포인트에 있는 같은 크기의 구형 area에 복사합니다.
alphaBitmap Parameters와 alphaPoint Parameters를 포함하면, 2 번째의 이미지를 소스 이미지의 알파 소스로서 사용할 수 있습니다. 소스 이미지에 알파 데이터가 있는 경우, 2 개의 알파 데이터 세트를 사용해, 소스 이미지의 픽셀이 타겟 이미지상에 합성됩니다. alphaPoint Parameters는, 소스 구형의 좌상구석에 대응하는, 알파 이미지내의 포인트입니다. 소스 이미지와 알파 이미지가 사귀지 않는 부분의 픽셀은, 타겟 이미지에 복사되지 않습니다.
mergeAlpha property는, 투명한 이미지가 다른 투명한 이미지에 복사될 때 알파 채널이 사용될지 어떨지를 제어합니다. (알파를 사용하지 않고 ) 픽셀을 복사하려면 ,mergeAlpha property를 false 로 설정하면, 모든 픽셀이 소스로부터 타겟으로 복사됩니다. mergeAlpha property의 디폴트치는 true 입니다.
sourceBitmapData:BitmapData — 픽셀의 복사원이 되는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData 인스턴스로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
destPoint:Point — 타겟 포인트입니다. 새로운 픽셀이 배치되는 구형 area의 좌상구석을 나타냅니다.
|
|
alphaBitmapData:BitmapData (default = null) — 제 2 의 알파 BitmapData object 소스입니다.
|
|
alphaPoint:Point (default = null) — 알파 BitmapData object 소스내의 포인트입니다. sourceRect Parameters의 좌상구석에 대응합니다.
|
|
mergeAlpha:Boolean (default = false) — 알파 채널을 사용하려면 , 값을 true 로 설정합니다. 알파 채널을 사용하지 않고 픽셀을 복사하려면 , 값을 false 로 설정합니다.
|
TypeError — sourceBitmapData, sourceRect 또는 destPoint 가 null 입니다.
|
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(40, 40, false, 0x000000FF); var bmd2:BitmapData = new BitmapData(80, 40, false, 0x0000CC44); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(10, 10); bmd2.copyPixels(bmd1, rect, pt); var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 50;
| dispose | () | Methods |
public function dispose():void BitmapData object의 포함에 사용되는 메모리를 해방합니다.
dispose() Methods를 이미지에 대해서 호출하면, 이미지의 폭과 높이가 제로로 설정됩니다. 그 이후, 이 BitmapData 인스턴스의 Methods나 property를 호출하면 실패해, 예외가 슬로우 됩니다.
dispose() Methods의 호출 후에 BitmapData object의 Methods를 호출했을 경우의 효과를 나타내고 있습니다
(예외가 슬로우 됩니다)
import flash.display.BitmapData;
var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x000000FF);
trace(myBitmapData.getPixel(1, 1)); // 255 == 0xFF
myBitmapData.dispose();
try {
trace(myBitmapData.getPixel(1, 1));
} catch (error:Error) {
trace(error); // ArgumentError
}
| draw | () | Methods |
public function draw(source:IBitmapDrawable , matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false):void
Flash Player 의 벡터 렌 다라를 사용해,source 표시 object를 비트 맵 이미지상에 묘화 합니다. matrix,colorTransform,blendMode, 및 타겟 clipRect Parameters를 지정하는 것으로써, 렌더링의 실행 방법을 제어할 수 있습니다. 게다가 필요에 따라서, 확대·축소시에 비트 맵의 스무딩을 실시할지 어떨지를 지정할 수도 있습니다 (이것은 소스 object가 BitmapData object의 경우에게만 가능합니다).
이 Methods는, authoring tool 인터페이스에 대해 object에 대해서 표준 벡터 렌 다라를 사용해 object를 묘화 하는 방법으로 직접 대응합니다.
소스 표시 object는, 이 호출로 적용되는 변환을 사용하지 않습니다. 프로그램 라이브러리나 파일안에 존재하는 것으로서 다루어져 매트릭스 변환, 칼라 변환, 브렌드 모드는 없습니다. 변환 property를 사용해 (무비 클립등의) 표시 object를 묘화 하려면 , BitmapData object를 사용하는 Bitmap object의 transform property에 transform property object를 복사할 수가 있습니다.
시큐러티상의 주의 사항:source object 및 (Sprite 또는 MovieClip object의) 모든 child object는, 호출원과 같은 도메인에 속하는지,Security.allowDomain() Methods 호출 후에 호출해 원으로부터 액세스 할 수 있는 SWF 파일에 포함되지 않으면 안됩니다. 이러한 조건이 채워지지 않은 경우,draw() Methods는 아무것도 묘화 하지 않습니다.
source:IBitmapDrawable — BitmapData object에 묘화 되는 표시 object 또는 BitmapData object입니다. (DisplayObject 및 BitmapData 클래스는 IBitmapDrawable 인터페이스를 Implements하고 있습니다).
|
|
matrix:Matrix (default = null) — 비트 맵의 좌표를 확대·축소, 회전, 또는 변환하기 위해서 사용되는 Matrix object입니다. 매트릭스 변환을 이미지에 적용하고 싶지 않은 경우는, (디폴트 new Matrix() constructor 을 사용해 작성된다) 단위 매트릭스에 이 Parameters를 설정하는지,null 값를 건네주세요.
|
|
colorTransform:ColorTransform (default = null) — 비트 맵의 칼라치를 조정하기 위해서 사용하는 ColorTransform object입니다. object가 제공되지 않는 경우, 비트 맵 이미지의 칼라는 변환되지 않습니다. 이 Parameters를 건네줄 필요가 있지만, 이미지를 변환하고 싶지 않은 경우, 이 Parameters를, 디폴트의 new ColorTransform() constructor 을 사용해 작성되는 ColorTransform object로 설정합니다.
|
|
blendMode:String (default = null) — 결과적으로 생성되는 비트 맵에 적용되는 브렌드 모드를 지정하는, flash.display.BlendMode 클래스의 string치입니다.
|
|
clipRect:Rectangle (default = null) — 묘화 하는 소스 object의 area를 정의하는 구형 object입니다. 이 값을 지정하지 않는 경우, 클리핑은 발생하지 않고, 소스 object 전체가 묘화 됩니다.
|
|
smoothing:Boolean (default = false) — 확대·축소시에 BitmapData object의 스무딩을 실시할지 어떨지를 결정하는 불리언 값입니다.
|
ArgumentError — source Parameters가, BitmapData 또는 DisplayObject object가 아닙니다.
|
|
SecurityError — source object, 및 (Sprite 또는 MovieClip object의) 모든 child object가 호출해 원과 같은 도메인에 속하지 않은지,Security.allowDomain() Methods 호출 후에 호출해 원으로부터 액세스 할 수 있는 SWF 파일에 포함되어 있지 않습니다.
|
|
ArgumentError — source 가 null 인지, 유효한 IBitmapDrawable object가 아닙니다.
|
See also
import flash.display.Bitmap; import flash.display.BitmapData; import flash.text.TextField; var tf:TextField = new TextField(); tf.text = "bitmap text"; var myBitmapData:BitmapData = new BitmapData(80, 20); myBitmapData.draw(tf); var bmp:Bitmap = new Bitmap(myBitmapData); this.addChild(bmp);
| fillRect | () | Methods |
public function fillRect(rect:Rectangle , color:uint ):void 지정된 ARGB 칼라로 구형 area의 픽셀을 전부 칠합니다.
Parametersrect:Rectangle — 전부 칠하는 구형 area입니다.
|
|
color:uint — area를 전부 칠하기 (위해)때문에 사용되는 ARGB 칼라치입니다. ARGB 칼라치는 통상, 16 진수 형식 (예를 들어, 0xFF336699)에서 지정합니다.
|
TypeError — rect 가 null 입니다.
|
See also
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x0000FF); var bm:Bitmap = new Bitmap(myBitmapData); addChild(bm);
| floodFill | () | Methods |
public function floodFill(x:int , y:int , color:uint ):void
(x, y) 좌표를 시점으로서 소정의 색으로 전부 칠하는 것으로, 이미지의 전부 칠해 처리를 실행합니다. floodFill() Methods는, 각종의 paint 프로그램의 물통 툴과 같은 것입니다. color 는, 알파 정보와 칼라 정보를 포함한 ARGB 칼라입니다.
x:int — 이미지의 x 좌표입니다.
|
|
y:int — 이미지의 y 좌표입니다.
|
|
color:uint — 칠로서 사용하는 ARGB 칼라입니다.
|
(10, 10) 로 정의되고 있는 픽셀을 둘러싸, 모든 칼라는 이 포인트와 같은 색 (적색)
(이)가 되어 있습니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var myBitmapData:BitmapData = new BitmapData(40, 40, false, 0x0000FF00); var rect:Rectangle = new Rectangle(0, 0, 20, 20); myBitmapData.fillRect(rect, 0x000000FF); rect = new Rectangle(15, 15, 25, 25); myBitmapData.fillRect(rect, 0x000000FF); myBitmapData.floodFill(10, 10, 0x00FF0000); var bm:Bitmap = new Bitmap(myBitmapData); addChild(bm);
| generateFilterRect | () | Methods |
public function generateFilterRect(sourceRect:Rectangle , filter:BitmapFilter ):Rectangle
BitmapData object, 소스 구형, 필터 object를 지정해,applyFilter() Methods 호출에 의해 영향을 받는 타겟 구형을 결정합니다.
예를 들어, 애매하게 해 필터는 통상, 원의 이미지의 크기보다 큰 area에 영향을 줍니다. 디폴트의 BlurFilter 인스턴스 (blurX = blurY = 4)에 의해 필터가 적용되는 100 ●x● 200 픽셀의 이미지는 (-2,-2, 104,204) 이라고 하는 타겟 구형을 생성합니다. generateFilterRect() Methods를 사용하면, 이 타겟 구형의 크기를 미리 알 수 있으므로, 필터 처리전에 타겟 이미지를 적절한 크기로 할 수 있습니다.
몇개의 필터는, 소스 이미지의 크기에 근거해 타겟 구형을 클리핑 합니다. 예를 들어, 안쪽의 DropShadow 는, 소스 이미지보다 큰 결과를 생성하지 않습니다. 이 API 에서는, 소스 rect Parameters는 아니고, BitmapData object를 소스의 경계로서 사용합니다.
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
filter:BitmapFilter — 타겟 구형을 산출하기 위해서 사용하는 필터 object입니다.
|
Rectangle —
이미지,sourceRect Parameters, 및 필터를 사용해 산출되는 타겟 구형입니다.
|
TypeError — sourceRect 또는 filter 가 null 입니다.
|
generateFilterRect() Methods를 사용하는 것으로써,
애매하게 해 필터의 결과가 차지하는 구형 area를 판별하는 방법을 나타내고 있습니다. ▼generateFilterRect() ▼
Methods의 결과는,trace() 함수에 의해 출력됩니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Point; import flash.geom.Rectangle; import flash.filters.BlurFilter; var bmd:BitmapData = new BitmapData(80, 30, false, 0xFFCC00); var rect:Rectangle = new Rectangle(10, 10, 40, 10); bmd.fillRect(rect, 0xFF0000); var pt:Point = new Point(10, 10); var filter:BlurFilter = new BlurFilter(); trace(bmd.generateFilterRect(rect, filter)); // (x=8, y=8, w=44, h=14) bmd.applyFilter(bmd, rect, pt, filter); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
generateFilterRect() Methods는 필터를 적용하지 않습니다. 필터를 적용하려면 applyFilter() Methods를
호출해 주세요.
| getColorBoundsRect | () | Methods |
public function getColorBoundsRect(mask:uint , color:uint , findColor:Boolean = true):Rectangle
(findColor Parameters가 true 로 설정되어 있는 경우) 비트 맵 이미지내의 지정된 색의 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다. 또는, (findColor Parameters가 false 로 설정되어 있는 경우) 지정된 색은 아닌 모든 픽셀을 완전하게 둘러싸는 구형 area를 판별합니다.
예를 들어, 어느 소스 이미지로, 0 이외의 알파 채널을 포함한 이미지의 구형을 판별하려면 , Parameters로서 {mask: 0xFF000000, color: 0x00000000} 를 건네줍니다. findColor Parameters가 true 로 설정되어 있는 경우,(value & mask) == color 인 픽셀의 경계를 찾아내기 위해서(때문에) 이미지 전체가 검색됩니다 (value 는 픽셀의 칼라치). findColor Parameters가 false 로 설정되어 있는 경우,(value & mask) ! = color 인 픽셀의 경계를 찾아내기 위해서(때문에) 이미지 전체가 검색됩니다 (value 는 픽셀의 칼라치). 이미지의 주위의 공백을 판별하려면 , 공백 이외의 픽셀의 경계를 찾아내기 위해서(때문에),{mask: 0xFFFFFFFF, color: 0xFFFFFFFF} 를 건네주세요.
mask:uint — 대상이 되는 ARGB 칼라의 비트를 지정하는 16 진수치입니다. 칼라치는,& (비트 단위의 논리적 (AND)) 연산자를 사용해, 이 16 진수치와 조합할 수 있습니다.
|
|
color:uint — 16 진수치입니다. (findColor 가 true 로 설정되어 있는 경우는) 일치해야 할 ARGB 칼라, (findColor 가 false 로 설정되어 있는 경우는) 일치해야 할이 아닌 ARGB 칼라를 각각 지정합니다.
|
|
findColor:Boolean (default = true) — 값가 true 로 설정되었을 경우, 이미지내의 칼라치의 경계를 돌려줍니다. 값이 false 로 설정되었을 경우, 이미지내의 지정된 칼라가 존재하지 않는 area의 경계를 돌려줍니다.
|
Rectangle —
지정된 색인 이미지의 area입니다.
|
getColorBoundsRect() Methods를 호출해, 빨강 (0xFF0000)의 픽셀로부터 되는 구형을 판별합니다. 게다가
(findColor Parameters를 false 로 설정해) 같은 Methods를 호출해,
빨강이 아닌 픽셀로부터 되는 구형을 판별합니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF); var rect:Rectangle = new Rectangle(0, 0, 80, 20); bmd.fillRect(rect, 0xFF0000); var mask:uint = 0xFFFFFF; var color:uint = 0xFF0000; var redBounds:Rectangle = bmd.getColorBoundsRect(mask, color, true); trace(redBounds); // (x=0, y=0, w=80, h=20) var notRedBounds:Rectangle = bmd.getColorBoundsRect(mask, color, false); trace(notRedBounds); // (x=0, y=20, w=80, h=20) var bm:Bitmap = new Bitmap(bmd); addChild(bm);
| getPixel | () | Methods |
public function getPixel(x:int , y:int ):uint
BitmapData object의 특정 포인트 (x, y)의 RGB 픽셀치를 나타내는 정수를 돌려줍니다. getPixel() Methods는, 곱셈되어 있지 않은 픽셀치를 돌려줍니다. 알파 정보는 돌려주지 않습니다.
BitmapData object내의 모든 픽셀은, 곱셈이 끝난 칼라치로서 보존됩니다. 곱셈이 끝난 이미지 픽셀은, 알파 데이터가 이미 곱셈된 적, 초록, 파랑의 각 칼라 채널치를 보관 유지합니다. 예를 들어, 알파치가 0 의 경우, 곱셈되어 있지 않은 값 (와)는 관계없는 것으로, RGB 채널의 값도 0 이 됩니다. 이와 같이 데이터가 없어지면, 처리의 실행시에 문제가 생기는 일이 있습니다. BitmapData 의 모든 Methods는, 곱셈되어 있지 않은 값을 받거나 돌려주거나 합니다. 픽셀의 내부 표현은, 값으로 해서 돌려주어지기 전에, 곱셈이 끝난 상태로부터 비곱셈에 변환됩니다. 설정 처리때는, 픽셀치가 사전에 곱셈되고 나서, 생의 이미지 픽셀이 설정됩니다.
Parametersx:int — 픽셀의 x 좌표.
|
|
y:int — 픽셀의 y 좌표.
|
uint —
RGB 픽셀치를 나타내는 수치. (x, y) 좌표가 이미지 경계의 외측인 경우, Methods는 0 을 돌려줍니다. 비트 맵이 투명하지 않게 불투명으로서 작성되었을 경우, 지정된 포인트가 이미지 경계의 안쪽이면, Methods는 에러 코드 -1 를 돌려줍니다.
|
See also
getPixel() Methods를 사용해 좌상의 픽셀의 칼라치를 판별합니다.
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, false, 0xFF0000); var pixelValue:uint = bmd.getPixel(1, 1); trace(pixelValue.toString(16)); // ff0000;
| getPixel32 | () | Methods |
public function getPixel32(x:int , y:int ):uint
알파 채널 데이터와 RGB 데이터를 포함한 ARGB 칼라치를 돌려줍니다. 이 Methods는 getPixel() Methods와 닮아 있습니다만,getPixel() Methods는 알파 채널 데이터가 없는 RGB 칼라를 돌려줍니다.
BitmapData object내의 모든 픽셀은, 곱셈이 끝난 칼라치로서 보존됩니다. 곱셈이 끝난 이미지 픽셀은, 알파 데이터가 이미 곱셈된 적, 초록, 파랑의 각 칼라 채널치를 보관 유지합니다. 예를 들어, 알파치가 0 의 경우, 곱셈되어 있지 않은 값 (와)는 관계없는 것으로, RGB 채널의 값도 0 이 됩니다. 이와 같이 데이터가 없어지면, 처리의 실행시에 문제가 생기는 일이 있습니다. BitmapData 의 모든 Methods는, 곱셈되어 있지 않은 값을 받거나 돌려주거나 합니다. 픽셀의 내부 표현은, 값으로 해서 돌려주어지기 전에, 곱셈이 끝난 상태로부터 비곱셈에 변환됩니다. 설정 처리때는, 픽셀치가 사전에 곱셈되고 나서, 생의 이미지 픽셀이 설정됩니다.
Parametersx:int — 픽셀의 x 좌표.
|
|
y:int — 픽셀의 y 좌표.
|
uint —
ARGB 픽셀치를 나타내는 수치. (x, y) 좌표가 이미지의 경계외인 경우는, 0 을 돌려줍니다.
|
See also
getPixel32() Methods를 사용해 좌상의 픽셀의 칼라치를 판별합니다. 게다가
각각의 칼라 성분 (알파, 적, 록, 청)에 대응하는 16 진수치를 판별합니다.
import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(80, 40, true, 0xFF44AACC); var pixelValue:uint = bmd.getPixel32(1, 1); var alpha:uint = pixelValue >> 24 & 0xFF; var red:uint = pixelValue >> 16 & 0xFF; var green:uint = pixelValue >> 8 & 0xFF; var blue:uint = pixelValue & 0xFF; trace(alpha.toString(16)); // ff trace(red.toString(16)); // 44 trace(green.toString(16)); // aa trace(blue.toString(16)); // cc
| getPixels | () | Methods |
public function getPixels(rect:Rectangle ):ByteArray 픽셀 데이터의 구형 area로부터 바이트 배열을 생성합니다. 각 픽셀 마다, 부호 없음 정수 (32 비트의 곱셈되지 않는 픽셀치)를 바이트 배열에 기입합니다.
Parametersrect:Rectangle — 현재의 BitmapData object내의 구형 area입니다.
|
ByteArray —
특정의 구형내의 픽셀을 나타내는 ByteArray 입니다.
|
TypeError — rect 가 null 입니다.
|
See also
getPixels() Methods를 사용해, ByteArray object를 BitmapData object의 픽셀치로 전부 칠합니다.
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.utils.ByteArray; var bmd:BitmapData = new BitmapData(80, 40, true); var seed:int = int(Math.random() * int.MAX_VALUE); bmd.noise(seed); var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height); var pixels:ByteArray = bmd.getPixels(bounds);
| hitTest | () | Methods |
public function hitTest(firstPoint:Point , firstAlphaThreshold:uint , secondObject:Object , secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1):Boolean 1 개의 비트 맵 이미지와 포인트, 구형, 또는 다른 비트 맵 이미지와의 사이에 픽셀 레벨의 히트를 검출합니다. 히트 테스트때, 어느 쪽의 object의 변환 (신축, 회전등)도 고려되지 않습니다.
이미지가 불투명한 경우, 이 Methods에서는 완전하게 불투명한 구형으로 간주해집니다. 투과성을 고려하는 픽셀 레벨의 히트 테스트를 실시하려면 , 양쪽 모두의 이미지와도 투명하지 않으면 안됩니다. 2 개의 투명한 이미지를 테스트할 때, 알파 해 귀의치 Parameters는, 알파 채널치 (0 ~ 255)가 몇개이면 불투명으로 간주하는지를 제어합니다.
ParametersfirstPoint:Point — 임의의 좌표 공간에 있어서의 BitmapData 이미지의 좌상구석의 위치입니다. 같은 좌표 공간을 사용해 secondBitmapPoint Parameters가 정의됩니다.
|
|
firstAlphaThreshold:uint — 이 히트 테스트로 불투명으로 간주해지는 알파 채널의 최대치입니다.
|
|
secondObject:Object — Rectangle, Point, Bitmap, 또는 BitmapData object입니다.
|
|
secondBitmapDataPoint:Point (default = null) — 2 번째의 BitmapData object내의 픽셀 위치를 정의하는 포인트입니다. 이 Parameters는,secondObject 의 값이 BitmapData object인 경우에게만 사용합니다.
|
|
secondAlphaThreshold:uint (default = 1) — 2 번째의 BitmapData object내에서 불투명하다라고 보이는 알파 채널의 최대치입니다. 이 Parameters는,secondObject 의 값이 BitmapData object로, 양쪽 모두의 BitmapData object가 투명한 경우에게만 사용합니다.
|
Boolean —
히트가 발생하는 경우는 true, 그렇지 않은 경우는 false 입니다.
|
ArgumentError — secondObject Parameters가, Point, Rectangle, Bitmap, 또는 BitmapData object가 아닙니다.
|
|
TypeError — firstPoint 가 null 입니다.
|
secondObject 에 Point object를 지정해 hitTest() Methods를 호출합니다.
최초의 호출에서는, Point object가 (불투명하지 않다) BitmapData object의 좌상구석을 정의해,
2 번째의 호출에서는, Point object가 (불투명한) BitmapData object의 중앙을 정의합니다.
import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(80, 80, true, 0x00000000); var rect:Rectangle = new Rectangle(20, 20, 40, 40); bmd1.fillRect(rect, 0xFF0000FF); var pt1:Point = new Point(1, 1); trace(bmd1.hitTest(pt1, 0xFF, pt1)); // false var pt2:Point = new Point(40, 40); trace(bmd1.hitTest(pt1, 0xFF, pt2)); // true
| lock | () | Methods |
public function lock():void
이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되지 않게, 이미지를 잠급니다. 퍼포먼스를 향상시키려면 ,setPixel() Methods 또는 setPixel32() Methods를 몇번이나 호출하는 전후에, 이 Methods를 unlock() Methods와 함께 사용해 주세요.
See also
picture 의 bitmapData property에 근거하고 있습니다.
그 후,lock() Methods를 호출한 다음에, BitmapData object를 변경한다
복잡한 custom 함수 complexTransformation() 를 호출합니다. (picture object와
complexTransformation() 함수는 이 예에서는 정의되지 않습니다. ) 비록
complexTransformation() 함수가 picture object의 bitmapData property를
갱신했을 경우에서도,unlock() Methods가
bitmapData object에 대해서 불려 갈 때까지는, 변경 내용이 반영되지 않습니다.
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
| merge | () | Methods |
public function merge(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redMultiplier:uint , greenMultiplier:uint , blueMultiplier:uint , alphaMultiplier:uint ):void 소스 이미지와 타겟 이미지를 채널 마다 브렌드 합니다. 채널 마다 다음의 식을 사용합니다.
new red dest = (red source * redMultiplier) + (red dest * (256 - redMultiplier) / 256;
redMultiplier 값,greenMultiplier 값,blueMultiplier 값, 및 alphaMultiplier 값는, 각각의 칼라 채널의 승수입니다. 유효한 범위는 0 ~ 256 입니다.
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData object를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
|
|
redMultiplier:uint — 빨강 채널치에 곱셈하는 수치입니다.
|
|
greenMultiplier:uint — 초록 채널치에 곱셈하는 수치입니다.
|
|
blueMultiplier:uint — 파랑 채널치에 곱셈하는 수치입니다.
|
|
alphaMultiplier:uint — 알파 투명도의 값에 곱셈하는 수치입니다.
|
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.
|
merge() Methods를 호출해,
2 번째의 BitmapData 픽셀을 최초의 BitmapData object의 지정된 구형 area에게만 결합합니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Point; var bmd1:BitmapData = new BitmapData(100, 80, true, 0xFF00FF00); var bmd2:BitmapData = new BitmapData(100, 80, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 20, 20); var pt:Point = new Point(20, 20); var mult:uint = 0x80; // 50% bmd1.merge(bmd2, rect, pt, mult, mult, mult, mult); var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 110;
| noise | () | Methods |
public function noise(randomSeed:int , low:uint = 0, high:uint = 255, channelOptions:uint = 7, grayScale:Boolean = false):void 랜덤 노이즈를 나타내는 픽셀로 이미지를 전부 칠합니다.
ParametersrandomSeed:int — 랜덤 배정 (난수의 종)으로서 사용하는 수치입니다. 다른 모든 Parameters를 같은 로 했을 경우, 랜덤 배정의 값을 변경하는 것으로 다양한 유사 난수를 생성할 수 있습니다. 노이즈 함수는 매핑 함수이며, 진정한 난수 생성 함수가 아닙니다. 이 때문에, 같은 랜덤 배정으로부터 매회 같은 결과가 작성됩니다.
|
|
low:uint (default = 0) — 채널 마다 생성하는 최소치입니다 (0 ~ 255).
|
|
high:uint (default = 255) — 채널 마다 생성하는 최대치입니다 (0 ~ 255).
|
|
channelOptions:uint (default = 7) — 임의의 4 개의 칼라 채널치 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN, 및 BitmapDataChannel.ALPHA) 의 편성인 수치. OR 논리 연산자 (|)를 사용해, 복수의 채널치를 조합할 수가 있습니다.
|
|
grayScale:Boolean (default = false) — 불리언 값. 값이 true 의 경우, 모든 칼라 채널에 같은 값을 설정하는 것으로 그레이 스케일의 이미지가 작성됩니다. 이 Parameters를 true 로 설정해도, 알파 채널 선택에는 영향을 주지 않습니다.
|
See also
noise()
Methods를 호출합니다. 다만,grayscale Parameters는 false (최초의 object에 대한다
noise() Methods 호출), 및 true (2 번째의 object에 대한다
noise() Methods 호출)에 각각 설정합니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; var bmd1:BitmapData = new BitmapData(80, 80); var bmd2:BitmapData = new BitmapData(80, 80); var seed:int = int(Math.random() * int.MAX_VALUE); bmd1.noise(seed, 0, 0xFF, BitmapDataChannel.RED, false); bmd2.noise(seed, 0, 0xFF, BitmapDataChannel.RED, true); var bm1:Bitmap = new Bitmap(bmd1); this.addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); this.addChild(bm2); bm2.x = 90;
| paletteMap | () | Methods |
public function paletteMap(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , redArray:Array = null, greenArray:Array = null, blueArray:Array = null, alphaArray:Array = null):void 최대로 4 개의 칼라 팔레트 데이터 배열 ( 각 채널 마다 1 개의 배열)을 사용해, 이미지내의 칼라 채널치를 매핑 다시 합니다.
Flash Player 는 이하의 순서에 따라, 결과적으로 얻을 수 있는 이미지를 생성합니다.
redArray,greenArray,blueArray, 및 alphaArray 가 있습니다. 이것들 4 개의 배열에는 각각 256 개의 값이 포함되어 있을 필요가 있습니다. 이 Methods에서는 크로스 채널 효과를 지원(support)하는 것이 가능합니다. 각각의 입력 배열은 완전한 32 비트치를 포함할 수가 있습니다. 값을 서로 더할 때 이동은 발생하지 않습니다. 이 routine는, 채널 단위의 쿠란핑에 대응하고 있습니다.
채널에 대해서 배열이 지정되지 않는 경우는, 소스 이미지로부터 타겟 이미지에 칼라 채널이 복사됩니다.
이 Methods는 다양한 효과를 위해서(때문에) 사용할 수 있습니다. 예를 들어, 통상의 팔레트 매핑 (1 개의 채널을 선택해 유사색이미지로 변환한다)이 가능합니다. 게다가 감마, 곡선, 평준화, 양자화라고 한 다양한 칼라 조작 알고리즘에도 이 Methods를 사용할 수 있습니다.
ParameterssourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData object) 내의 포인트입니다.
|
|
redArray:Array (default = null) — redArray 가 null 가 아닌 경우,red = redArray[source red value]
else red = source rect value.
|
|
greenArray:Array (default = null) — greenArray 가 null 가 아닌 경우,green = greenArray[source
green value] else green = source green value.
|
|
blueArray:Array (default = null) — blueArray 가 null 가 아닌 경우,blue = blueArray[source blue
value] else blue = source blue value.
|
|
alphaArray:Array (default = null) — alphaArray 가 null 가 아닌 경우,alpha = alphaArray[source
alpha value] else alpha = source alpha value.
|
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.
|
paletteMap() Methods를 사용해, 빨강과 초록을
BitmapData object의 하반신의 구형으로 바꿔 넣습니다.
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
var myBitmapData:BitmapData = new BitmapData(80, 80, false, 0x00FF0000);
myBitmapData.fillRect(new Rectangle(20, 20, 40, 40), 0x0000FF00);
var redArray:Array = new Array(256);
var greenArray:Array = new Array(256);
for(var i:uint = 0; i < 255; i++) {
redArray[i] = 0x00000000;
greenArray[i] = 0x00000000;
}
redArray[0xFF] = 0x0000FF00;
greenArray[0xFF] = 0x00FF0000;
var bottomHalf:Rectangle = new Rectangle(0, 0, 100, 40);
var pt:Point = new Point(0, 0);
myBitmapData.paletteMap(myBitmapData, bottomHalf, pt, redArray, greenArray);
var bm1:Bitmap = new Bitmap(myBitmapData);
addChild(bm1);
| perlinNoise | () | Methods |
public function perlinNoise(baseX:Number , baseY:Number , numOctaves:uint , randomSeed:int , stitch:Boolean , fractalNoise:Boolean , channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void Perlin 노이즈 이미지를 생성합니다.
Perlin 노이즈 생성 알고리즘은, 개개의 랜덤 노이즈 함수 (옥타브라고 한다)를 보간 및 결합해, 보다 자연스러운 랜덤 노이즈를 생성하는 단일의 함수로 합니다. 음악의 옥타브와 같이, 각 옥타브 함수의 주파수는, 그 전의 옥타브 함수의 주파수의 2 배입니다. Perlin 노이즈는, 복수의 노이즈 데이터 세트를 다양한 상세 레벨로 조합하므로, 「프랙탈 이론 노이즈의 화」라고 불려 왔습니다.
Perlin 노이즈 함수를 사용해, 나뭇결, 구름, 산맥등의 자연현상이나 풍경을 시뮬레이트 할 수 있습니다. 대부분의 경우, Perlin 노이즈 함수의 출력을 그대로 표시하는 것이 아니라, 다른 이미지를 강조하거나 의사 랜덤 바리에이션을 주기 위해서(때문에) 사용합니다.
단순한 디지털 랜덤 노이즈 함수는, 많은 경우, 콘트라스트의 힘든 포인트가 포함되는 이미지를 생성합니다. 이와 같이 힘든 콘트라스트는 자연계에는 거의 존재하지 않습니다. Perlin 노이즈 알고리즘은, 다양한 상세 레벨로 실행되는 복수의 노이즈 함수를 혼합합니다. 이 알고리즘의 결과, 서로 인접하는 픽셀치의 차이는 보다 작아집니다.
메모 :Perlin 노이즈 알고리즘은, 1982 년의 영화 「트론」의 컴퓨터 그래픽을 생성한 후에 알고리즘을 개발한 Ken Perlin 씨를 기념하여 명명되었습니다. Perlin 씨는 1997 년에, Perlin 노이즈 함수에 관한 기술적 공적에 의해 아카데미상을 수상했습니다.
ParametersbaseX:Number — x 방향으로 사용하는 주파수. 예를 들어, 64 ●x● 128 의 이미지에 알맞는 크기의 노이즈를 생성하려면 ,baseX 값로서 64 를 건네줍니다.
|
|
baseY:Number — y 방향으로 사용하는 주파수. 예를 들어, 64 ●x● 128 의 이미지에 알맞는 크기의 노이즈를 생성하려면 ,baseY 값로서 128 을 건네줍니다.
|
|
numOctaves:uint — 이 노이즈를 작성하기 위해서 조합하는 옥타브 (즉 개개의 노이즈 함수)의 수. 옥타브수를 많이 하면, 에서 와 째 세세한 이미지를 작성할 수 있습니다. 옥타브수를 늘리면, 처리 시간도 길어집니다.
|
|
randomSeed:int — 랜덤 배정 (난수의 종)으로서 사용하는 수치입니다. 다른 모든 Parameters를 같은 로 했을 경우, 랜덤 배정의 값을 변경하는 것으로 다양한 유사 난수를 생성할 수 있습니다. Perlin 노이즈 함수는 매핑 함수이며, 진정한 난수 생성 함수가 아닙니다. 이 때문에, 같은 랜덤 배정으로부터 매회 같은 결과가 작성됩니다.
|
|
stitch:Boolean — 불리언 값. 값이 true 의 경우, 비트 맵 칠로서 심리스인 타일링용 texture를 작성하기 위해서, 이 Methods는 이미지의 트란지션엣지를 순조롭게 하는 것을 시도합니다.
|
|
fractalNoise:Boolean — 불리언 값. 값이 true 의 경우, 이 Methods는 프랙탈 이론 노이즈를 생성합니다. 그렇지 않은 경우, 난류를 생성합니다. 난류가 있는 이미지에는 그라데이션에 시각적인 불연속성이 있으므로, 불길이나 해파와 같이 샤프한 시각 효과에 적절하고 있는 경우가 있습니다.
|
|
channelOptions:uint (default = 7) — 임의의 4 개의 칼라 채널치 (BitmapDataChannel.RED,BitmapDataChannel.BLUE,BitmapDataChannel.GREEN, 및 BitmapDataChannel.ALPHA) 의 편성인 수치. OR 논리 연산자 (|)를 사용해, 복수의 채널치를 조합할 수가 있습니다.
|
|
grayScale:Boolean (default = false) — 불리언 값. 값이 true 의 경우, 적, 록, 및 파랑의 각 칼라 채널에 같은 값을 설정해, 그레이 스케일 이미지가 작성됩니다. 이 값이 true 로 설정되어도, 알파 채널의 값에 영향은 없습니다.
|
|
offsets:Array (default = null) — 각 옥타브의 |
perlinNoise() Methods를 호출합니다.
import flash.display.Bitmap; import flash.display.BitmapData; var bmd:BitmapData = new BitmapData(200, 200, false, 0x00CCCCCC); var seed:Number = Math.floor(Math.random() * 10); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd.perlinNoise(100, 80, 6, seed, false, true, channels, false, null); var bm:Bitmap = new Bitmap(bmd); addChild(bm);
| pixelDissolve | () | Methods |
public function pixelDissolve(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , randomSeed:int = 0, numPixels:int = 0, fillColor:uint = 0):int
소스 이미지로부터 타겟 이미지에의 피크세르디조르브, 또는 같은 이미지를 사용한 피크세르디조르브를 실행합니다. Flash Player 는 randomSeed 값를 사용해, 랜덤인 피크세르디조르브를 생성합니다. 완료할 때까지 피크세르디조르브를 계속하려면 , 이 함수의 반환값을 후속의 호출에 건네줄 필요가 있습니다.
소스 이미지와 타겟 이미지가 동일하지 않은 경우는, 모든 property를 사용해, 소스로부터 타겟으로 픽셀이 복사됩니다. 이 처리에 의해, 공백 이미지로부터 완전하게 설정된 이미지에의 디조르브가 가능하게 됩니다.
소스 이미지와 타겟 이미지가 동일한 경우는,color Parameters를 사용해 픽셀이 칠해집니다. 이 처리에 의해, 완전하게 설정된 이미지를 소거하도록(듯이) 디조르브 할 수 있습니다. 이 모드에서는, 타겟 point Parameters가 무시됩니다.
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
|
|
randomSeed:int (default = 0) — 피크세르디조르브를 개시하기 위해서 사용하는 랜덤 배정 (난수의 종)입니다.
|
|
numPixels:int (default = 0) — 디폴트는, 소스 area (폭 x 높이)의 것 1/30 입니다.
|
|
fillColor:uint (default = 0) — 소스치와 타겟치가 동일한 픽셀의 전부 칠해에 사용하는 ARGB 칼라치입니다.
|
int —
후속의 호출로 사용하는 새로운 랜덤 배정 (난수의 종)입니다.
|
TypeError — sourceBitmapData, sourceRect, 또는 destPoint 가 null 입니다.
|
|
TypeError — numPixels 가 부의 값입니다.
|
pixelDissolve() Methods를 사용해
회색의 BitmapData object를 붉은 object로 변환합니다. 그 때,
모든 픽셀의 색이 변화할 때까지, 한 번에 40 픽셀씩 디조르브 합니다.
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;
var bmd:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);
var bitmap:Bitmap = new Bitmap(bmd);
addChild(bitmap);
var tim:Timer = new Timer(20);
tim.start();
tim.addEventListener(TimerEvent.TIMER, timerHandler);
function timerHandler(event:TimerEvent) :void {
var randomNum:Number = Math.floor(Math.random() * int.MAX_VALUE);
dissolve(randomNum);
}
function dissolve(randomNum:Number) :void {
var rect:Rectangle = bmd.rect;
var pt:Point = new Point(0, 0);
var numberOfPixels:uint = 100;
var red:uint = 0x00FF0000;
bmd.pixelDissolve(bmd, rect, pt, randomNum, numberOfPixels, red);
var grayRegion:Rectangle = bmd.getColorBoundsRect(0xFFFFFFFF, 0x00CCCCCC, true);
if(grayRegion.width == 0 && grayRegion.height == 0 ) {
tim.stop();
}
}
| scroll | () | Methods |
public function scroll(x:int , y:int ):void 소정의 (x, y) 픽셀량만 이미지를 스크롤 합니다. 스크롤 area외의 엣지 area는 변함없이에 그대로 됩니다.
Parametersx:int — 수평 방향의 스크롤량입니다.
|
|
y:int — 수직 방향의 스크롤량입니다.
|
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
var rect:Rectangle = new Rectangle(0, 0, 40, 40);
bmd.fillRect(rect, 0xFFFF0000);
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
trace (bmd.getPixel32(50, 20). toString(16)); // ffcccccccc
bmd.scroll(30, 0);
trace (bmd.getPixel32(50, 20). toString(16)); // ffff0000
| setPixel | () | Methods |
public function setPixel(x:int , y:int , color:uint ):void BitmapData object의 1 개의 픽셀을 설정합니다. 이 처리중, 이미지 픽셀의 알파 채널은 현재의 값이 보관 유지됩니다. RGB 칼라 Parameters의 값은, 곱셈되어 있지 않은 칼라치로서 다루어집니다.
메모: setPixel() 또는 setPixel32() Methods를 반복해 사용하는 경우, 퍼포먼스를 향상시키려면 ,setPixel() 또는 setPixel32() Methods를 호출하기 전에 lock() Methods를 호출합니다. 그 후, 픽셀 변경이 모두 완료하면,unlock() 를 호출합니다. 이와 같이 처리를 실시하면, 픽셀 변경이 모두 완료할 때까지, 이 BitmapData 인스턴스를 참조하는 object는 갱신되지 않습니다.
x:int — 값가 변경되는 픽셀의 x 좌표입니다.
|
|
y:int — 값가 변경되는 픽셀의 y 좌표입니다.
|
|
color:uint — 결과적으로 생성되는, 픽셀의 RGB 칼라입니다.
|
See also
setPixel() Methods를 사용해,
BitmapData object내에 붉은 선을 묘화 합니다.
import flash.display.Bitmap;
import flash.display.BitmapData;
var bmd:BitmapData = new BitmapData(80, 80, false, 0xCCCCCC);
for (var i:uint = 0; i < 80; i++) {
var red:uint = 0xFF0000;
bmd.setPixel(i, 40, red);
}
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
| setPixel32 | () | Methods |
public function setPixel32(x:int , y:int , color:uint ):void
BitmapData object의 1 개의 픽셀에 칼라치와 알파 투명도 값을 설정합니다. 이 Methods는 setPixel() Methods와 닮아 있습니다. 주된 차이는,setPixel32() Methods는 알파 채널 정보를 포함한 ARGB 칼라치를 받아들이는 것입니다.
BitmapData object내의 모든 픽셀은, 곱셈이 끝난 칼라치로서 보존됩니다. 곱셈이 끝난 이미지 픽셀은, 알파 데이터가 이미 곱셈된 적, 초록, 파랑의 각 칼라 채널치를 보관 유지합니다. 예를 들어, 알파치가 0 의 경우, 곱셈되어 있지 않은 값 (와)는 관계없는 것으로, RGB 채널의 값도 0 이 됩니다. 이와 같이 데이터가 없어지면, 처리의 실행시에 문제가 생기는 일이 있습니다. BitmapData 의 모든 Methods는, 곱셈되어 있지 않은 값을 받거나 돌려주거나 합니다. 픽셀의 내부 표현은, 값으로 해서 돌려주어지기 전에, 곱셈이 끝난 상태로부터 비곱셈에 변환됩니다. 설정 처리때는, 픽셀치가 사전에 곱셈되고 나서, 생의 이미지 픽셀이 설정됩니다.
메모: setPixel() 또는 setPixel32() Methods를 반복해 사용하는 경우, 퍼포먼스를 향상시키려면 ,setPixel() 또는 setPixel32() Methods를 호출하기 전에 lock() Methods를 호출합니다. 그 후, 픽셀 변경이 모두 완료하면,unlock() 를 호출합니다. 이와 같이 처리를 실시하면, 픽셀 변경이 모두 완료할 때까지, 이 BitmapData 인스턴스를 참조하는 object는 갱신되지 않습니다.
x:int — 값가 변경되는 픽셀의 x 좌표입니다.
|
|
y:int — 값가 변경되는 픽셀의 y 좌표입니다.
|
|
color:uint — 결과적으로 생성되는, 픽셀의 ARGB 칼라입니다. 비트 맵이 불투명한 (투명하지 않다) 경우에는, 이 칼라치의 알파 투명도 부분은 무시됩니다.
|
See also
setPixel32() Methods를 사용해,
투명한 (alpha == 0x60) 붉은 선을 BitmapData object내에 묘화 합니다.
import flash.display.Bitmap;
import flash.display.BitmapData;
var bmd:BitmapData = new BitmapData(80, 80, true, 0xFFCCCCCC);
for (var i:uint = 0; i < 80; i++) {
var red:uint = 0x60FF0000;
bmd.setPixel32(i, 40, red);
}
var bm:Bitmap = new Bitmap(bmd);
addChild(bm);
| setPixels | () | Methods |
public function setPixels(rect:Rectangle , inputByteArray:ByteArray ):void
바이트 배열을 픽셀 데이터의 구형 area로 변환합니다. 각 픽셀 마다 ByteArray.readUnsignedInt() Methods가 불려 가 반환값이 픽셀에 기입해집니다. 구형 전체가 기입해지기 전에 바이트 배열이 종료했을 경우, 함수는 종료합니다. 바이트 배열내의 데이터는 32 비트 ARGB 픽셀치와 상정됩니다. 픽셀 독해의 전후에, 바이트 배열에 대한 시크는 실행되지 않습니다.
rect:Rectangle — BitmapData object의 구형 area를 지정합니다.
|
|
inputByteArray:ByteArray — 구형 area로 사용되는 32 비트의 곱셈되지 않는 픽셀치로부터 되는 ByteArray object입니다.
|
EOFError — inputByteArray object에는,rect 구형의 area를 전부 칠하기 위한 충분한 데이터가 포함되어 있지 않습니다. 이 Methods는, 가능한 한 많은 픽셀을 전부 칠한 후, 예외를 슬로우 합니다.
|
|
TypeError — rect 또는 inputByteArray 이 null 입니다.
|
See also
getPixels() 및
setPixels() Methods를 사용해, 1 개의 BitmapData object로부터 다른 object에 픽셀을 복사합니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.utils.ByteArray; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(100, 100, true, 0xFFCCCCCC); var bmd2:BitmapData = new BitmapData(100, 100, true, 0xFFFF0000); var rect:Rectangle = new Rectangle(0, 0, 100, 100); var bytes:ByteArray = bmd1.getPixels(rect); bytes.position = 0; bmd2.setPixels(rect, bytes); var bm1:Bitmap = new Bitmap(bmd1); addChild(bm1); var bm2:Bitmap = new Bitmap(bmd2); addChild(bm2); bm2.x = 110;
| threshold | () | Methods |
public function threshold(sourceBitmapData:BitmapData , sourceRect:Rectangle , destPoint:Point , operation:String , threshold:uint , color:uint = 0, mask:uint = 0xFFFFFFFF, copySource:Boolean = false):uint
지정되었고 귀의치와 비교해 이미지내의 픽셀치를 테스트해, 테스트에 적합한 픽셀에 새로운 칼라치를 설정합니다. threshold() Methods를 사용하면, 이미지내의 칼라 범위를 분리 및 값환하거나 그 외의 논리 연산을 이미지 픽셀에 대해서 실행할 수가 있습니다.
threshold() Methods의 테스트 논리는 다음과 같습니다.
((pixelValue & mask) operation (threshold & mask)) 의 경우, 픽셀을 color 로 설정copySource == true 이면,sourceBitmap 의 대응하는 픽셀치에 픽셀을 설정operation Parameters에는, 해 귀의치 테스트로 사용하는 비교 연산자를 지정합니다. 예를 들어,operation Parameters로서 "==" 를 사용하는 것으로써, 이미지내의 특정의 칼라치를 분리할 수 있습니다. 또는,{operation:
"<", mask: 0xFF000000, threshold: 0x7F000000, color:
0x00000000} 를 사용하는 것으로써, 소스 이미지 픽셀의 알파가 0x7F 미만의 경우에, 모든 타겟 픽셀이 완전하게 투명하게 되도록(듯이) 설정할 수 있습니다. 애니메이션화 된 트란지션이나 그 외의 효과에 대해서, 이 기법을 사용할 수 있습니다.
sourceBitmapData:BitmapData — 사용하는 입력 비트 맵 이미지입니다. 소스 이미지는, 다른 BitmapData object로 하는 일도, 현재의 BitmapData 인스턴스를 참조할 수도 있습니다.
|
|
sourceRect:Rectangle — 입력으로서 사용하는 소스 이미지의 area를 정의하는 구형입니다.
|
|
destPoint:Point — 소스 구형의 좌상구석에 대응하는, 타겟 이미지 (현재의 BitmapData 인스턴스) 내의 포인트입니다.
|
|
operation:String — 비교 연산자 ("<","<=",">",">=","==","! =")의 1 개. string로서 건네받습니다.
|
|
threshold:uint — 각 픽셀이 해 귀의치에 적합하는지, 그렇지 않으면 해 귀의치를 넘고 있는지를 테스트하기 위한 기준이 되는 값입니다.
|
|
color:uint (default = 0) — 해 귀의치 테스트에 적합했을 경우에 픽셀로 설정되는 칼라치입니다. 디폴트치는 0x000000 입니다.
|
|
mask:uint (default = 0xFFFFFFFF) — 칼라 컴퍼넌트를 분리하기 위해서 사용하는 마스크입니다.
|
|
copySource:Boolean (default = false) — 값가 true 이면, 해 귀의치 테스트에 적합하지 않는 경우에 소스 이미지의 픽셀치가 타겟으로 복사됩니다. 값이 false 이면, 해 귀의치 테스트에 적합하지 않는 경우에 소스 이미지는 복사되지 않습니다.
|
uint —
변경된 픽셀의 수입니다.
|
TypeError — sourceBitmapData, sourceRect, destPoint, 또는 operation 가 null 입니다.
|
|
ArgumentError — operation 의 string가 유효한 연산이 아닙니다.
|
perlinNoise() Methods를 사용해
파랑 및 빨강의 패턴을 1 개의 BitmapData object에 추가한 후,threshold()
Methods를 사용해 최초의 BitmapData object로부터 2 번째의 object에 이러한 픽셀을 복사합니다. 그 때,
빨강의 값이 0x80 (50%)보다 큰 픽셀을, 투명의 빨강 (0x20FF0000)으로 설정된 픽셀에 값환합니다.
import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.geom.Point; import flash.geom.Rectangle; var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var seed:int = int(Math.random() * int.MAX_VALUE); var channels:uint = BitmapDataChannel.RED | BitmapDataChannel.BLUE; bmd1.perlinNoise(100, 80, 12, seed, false, true, channels, false, null); var bitmap1:Bitmap = new Bitmap(bmd1); addChild(bitmap1); var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC); var pt:Point = new Point(0, 0); var rect:Rectangle = new Rectangle(0, 0, 200, 200); var threshold:uint = 0x00800000; var color:uint = 0x20FF0000; var maskColor:uint = 0x00FF0000; bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true); var bitmap2:Bitmap = new Bitmap(bmd2); bitmap2.x = bitmap1.x + bitmap1.width + 10; addChild(bitmap2);
| unlock | () | Methods |
public function unlock(changeRect:Rectangle = null):void
이 BitmapData object가 변경되었을 때에, BitmapData object를 참조하는 모든 object (예를 들어 Bitmap object)가 갱신되도록(듯이), 이미지를 락 해제합니다. 퍼포먼스를 향상시키려면 ,setPixel() Methods 또는 setPixel32() Methods를 몇번이나 호출하는 전후에, 이 Methods를 lock() Methods와 함께 사용해 주세요.
changeRect:Rectangle (default = null) — 변경된 BitmapData object의 area. 이 Parameters에 값을 지정하지 않는 경우, BitmapData object의 전area가 변경되었다고 보여집니다.
|
See also
picture 의 bitmapData property에 근거하고 있습니다.
그 후,lock() Methods를 호출한 다음에, BitmapData object를 변경한다
복잡한 custom 함수 complexTransformation() 를 호출합니다. (picture object와
complexTransformation() 함수는 이 예에서는 정의되지 않습니다. ) 비록
complexTransformation() 함수가 picture object의 bitmapData property를
갱신했을 경우에서도,unlock() Methods가
bitmapData object에 대해서 불려 갈 때까지는, 변경 내용이 반영되지 않습니다.
import flash.display.BitmapData; var bitmapData:BitmapData = picture.bitmapData; bitmapData.lock(); bitmapData = complexTransformation(bitmapData); bitmapData.unlock(); picture.bitmapData = bitmapData;
threshold() Methods를 사용한 테스트에 합격한 픽셀에 새로운 색이 적용됩니다.
이것을 실시하려면 , 이하의 순서를 실행합니다.
url property를 작성합니다. 이것은 이미지 파일의 장소와 이름입니다. completeHandler() Methods가 이미지의 조작을 완료했을 때에 dispatch되는 event listener를 인스턴스화합니다. request 가 loader.load() 에게 건네집니다. 이것에 의해,
표시 object를 사용해 이미지가 메모리에 로드 됩니다. completeHandler() Methods로 다음의 처리가 실행됩니다. duplicate 를 작성해,
duplicateImage() Methods를 호출해, 원의 이미지의 복제를 작성합니다. duplicate object의
BitmapData object에 할당합니다. operation 해 귀의치가 원의 값이상인 경우에,
새로운 색을 적용합니다. threshold 각 픽셀의 비교 대상의 값입니다. 이 예에서는,
알파 0xCC 의 밝은 회색으로 설정됩니다. color 해 귀의치의 테스트에 합격한 픽셀로 설정하는 색입니다.
이 경우는 황색입니다. mask 정반대의 색입니다. 이 경우는 투명색의 청색입니다. copySource false 로 설정합니다. 이것은, 해 귀의치를 채우지 않았던 경우에는,
픽셀치가 복사되지 않는 것을 나타냅니다. 이미지가 복제되어
해 귀의치의 테스트에 합격한 픽셀만이 변경되기 (위해)때문에, 이 값에 의미는 없습니다. threshold() Methods를 호출합니다. 결과의 해 귀의치의 등식은
다음과 같이 됩니다. if (current pixel Value & 0x000000FF) >=
(0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00. 메모 :
package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events. *;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.net.URLRequest;
public class BitmapDataExample extends Sprite {
private var url:String = "Image.gif";
private var size:uint = 80;
public function BitmapDataExample() {
configureAssets();
}
private function configureAssets() :void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
var request:URLRequest = new URLRequest(url);
loader.x = size * numChildren;
loader.load(request);
addChild(loader);
}
private function duplicateImage(original:Bitmap) :Bitmap {
var image:Bitmap = new Bitmap(original.bitmapData.clone());
image.x = size * numChildren;
addChild(image);
return image;
}
private function completeHandler(event:Event) :void {
var loader:Loader = Loader(event.target.loader);
var image:Bitmap = Bitmap(loader.content);
var duplicate:Bitmap = duplicateImage(image);
var bitmapData:BitmapData = duplicate.bitmapData;
var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
var destPoint:Point = new Point();
var operation:String = ">=";
var threshold:uint = 0xCCCCCCCC;
var color:uint = 0xFFFFFF00;
var mask:uint = 0x000000FF;
var copySource:Boolean = true;
bitmapData.threshold(bitmapData,
sourceRect,
destPoint,
operation,
threshold,
color,
mask,
copySource);
}
private function ioErrorHandler(event:IOErrorEvent) :void {
trace("Unable to load image: " + url);
}
}
}
코멘트가 추가되었을 경우, 메일로 받기. | 코멘트 리포트
현재의 페이지: http://flexdocs.kr/docs/flex2/langref/flash/display/BitmapData.html