ActionScript 3.0을 사용하여 그레이 스케일 그라디언트 비트 맵을 동적으로 색칠해야합니다. 그라디언트는 흰색에서 검은 색으로 가고 어두운 색은 0xFF0000, 가장 밝은 0xFFFFFF가되어야합니다. 혼합 된 결과와 안정적인 해결책이없는 paletteMap 및 ColorMatrixFilter를 시도했습니다.회색 음영 이미지 as3을 색칠
2
A
답변
1
빨강 색 채널에 255 오프셋이있는 행렬을 구축하여 ColorMatrixFilter와 매우 관련이 있습니다 (그렇지 않은 경우 단위 행렬).
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.filters.*;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var matrix:Array = new Array();
matrix = matrix.concat([1,0,0,0,255]);
matrix = matrix.concat([0,1,0,0,0]);
matrix = matrix.concat([0,0,1,0,0]);
matrix = matrix.concat([0,0,0,1,0]);
var colorFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
bmd.applyFilter(bmd, bmd.rect, new Point(0,0), colorFilter);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
}
}
}
또한 색으로 채워진 새 bitmapData를을 만들 수 있습니다
이 샘플 문서 클래스는 FLA 라이브러리는 720 × 480 수출 기호 flash.display.BitmapData의 서브 클래스이다 "GradientBMD"가 가정 당신은 그라데이션 (검은 색 대신에)에 램프 싶은 BlendMode.ADD하여 그라데이션에 복사 :
package
{
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.BlendMode;
import flash.geom.Point;
public class GreyscaleDemo extends Sprite
{
public function GreyscaleDemo()
{
var bmd:BitmapData = new GradientBMD(720,480);
var bitmap:Bitmap = new Bitmap(bmd);
this.addChild(bitmap);
var bmd2:BitmapData = new BitmapData(720, 480, false, 0xFF0000);
bmd.draw(bmd2, null, null, BlendMode.ADD, bmd.rect,false);
}
}
}
1
대신 (다른 답변에서 설명) 당신은 또한 사용할 수있는하여 ColorMatrixFilter를 사용하는 의 blendMode = "밝기" 옵션도 있습니다.
내가 도움이 될 수 있습니다 ActionScript의 그레이 스케일 이미지에 블로그 게시물이 있습니다 http://flexdevtips.blogspot.com/2011/01/grayscale-images-progressbar-rating.html
2
var color:uint = 0xFF0000;
var r:uint = (color >> 16) & 0xFF;
var g:uint = (color >> 8) & 0xFF;
var b:uint = color & 0xFF;
var n:Number = 1/3;
var matrix:Array = new Array();
matrix = matrix.concat([n,n,n,0,r]);
matrix = matrix.concat([n,n,n,0,g]);
matrix = matrix.concat([n,n,n,0,b]);
matrix = matrix.concat([0,0,0,1,0]);
_bitmapData.applyFilter(_bitmapData, _bitmapData.rect, new Point(), new ColorMatrixFilter(matrix));'
관련 문제
- 1. OpenGL에서 회색 음영 이미지 색상 지정
- 2. 회색 음영 값을 RGB 표현으로 변환 하시겠습니까?
- 3. Java에서 투명도가있는 회색 음영 이미지를 채색하는 적절한 방법은 무엇입니까?
- 4. C#의 8 비트 회색 음영 이미지에 쓰기
- 5. 텍스트 영역 내부의 색칠 라인
- 6. AS3을 사용하는 버튼으로 PNG/GIF 이미지 사용
- 7. 이미지 업로드 진행 URLLoader AS3을 사용하여
- 8. as3을 사용하여 플래시 cs4에 이미지 삽입
- 9. UITabBarItem의 음영 조정
- 10. imagesc의 색칠
- 11. 동적 색칠
- 12. GLSL 음영 문제 : 왜 내 구가 빨간색이 아닌 회색 음영으로 표시됩니까? (코드를 참조하십시오)
- 13. Firefox에서 마우스 오버시 이미지의 회색 음영 버전을 표시하기 위해 JavaScript를 사용하는 방법은 무엇입니까?
- 14. 주변의 음영 처리 된면과 3D 음영/조명이 손실된다
- 15. 이미지 그레이 스케일링 및 원래 이미지 참조하기
- 16. 잘린 UIView에 음영 추가
- 17. iOS CSS 음영 문제
- 18. 음속 2.2 음영
- 19. 기존 이미지 수정, 색칠 및 드래그 iPhone 애플리케이션
- 20. 빔 : 키워드 색칠
- 21. CSS 색칠 표 문제
- 22. 색칠 가까운 지점
- 23. WPF의 구문 색칠
- 24. TreeViewer에서 행에 색칠
- 25. 서식있는 텍스트 편집기 색칠
- 26. HTML5 캔버스 - 색칠 문제
- 27. Minted를 사용한 라텍스의 색칠
- 28. 색칠 코드가 사라졌습니다
- 29. AS3을 Cocos2D로 변환
- 30. AS3을 올바르게 작성하고 있습니까?
을하여 ColorMatrixFilter 예에서는, 나는 특별한 적색을 맡았다. 물론 각 채널의 오프셋을 설정하여 임의의 RGBA 색상으로 그라디언트를 색칠 할 수 있습니다. 솔리드 컬러로 색을 칠하는 경우 필터 솔루션을 가장 좋은 방법으로 사용하기 때문에 필자는 필터 솔루션을 맨 위로 이동했습니다. 색조가 일정하지 않은 경우 (즉, 적용 할 두 번째 색조 비트 맵이있는 경우) 두 번째 해결 방법을 사용합니다. –
감사합니다! ColorMatrix 필터가 가장 효과적입니다. 아래에 게시 된 최종 솔루션 - 그레이 스케일 이미지뿐만 아니라 컬러도 잘 작동합니다. –