2010-12-30 3 views
2

ARGB BufferedImage를 만들었습니다. 이제는 투명 배경으로 다시 초기화하고 싶습니다. 다음 코드를 시도 :Graphics2D를 사용하여 투명도로 채우기

(...) 
if(this.offscreen==null || 
    this.offscreen.getWidth()!= dim.width || 
    this.offscreen.getHeight()!= dim.height) 
    { 
    this.offscreen=new BufferedImage(
     dim.width, 
     dim.height, 
     BufferedImage.TYPE_INT_ARGB); 
    } 
Graphics2D g=this.offscreen.createGraphics(); 
g.setColor(new Color(255,255,255,0)); 
g.clearRect(0, 0, dim.width, dim.height); 
(...) 

하지만 작동하지 않았다.

어떻게 만드시겠습니까?

감사합니다.

+0

하셨습니까 '를 취소하려는 시스템의 스크린 샷을하지만

BufferedImage image = new Robot().createScreenCapture(new Rectangle(0, 23, xScreen, yScreen)); 

을주의 그리고

페인트 클래스의 생성자에서 : 여기 는 거래이다 어떻게 일하니? 예외를 던 졌나요? 파란 심상을 창조 했는가? null 이미지를 만들었습니까? – Will

+0

내 화면이 흰색 배경에 검은 색입니다. – Pierre

답변

2

g.clearRect(..)은 선택한 사각형을 Graphics2D 개체의 배경색으로 채 웁니다. g.fillRect(..)을 사용하여 코드로 원하는 결과를 얻거나, Graphics2D 오브젝트의 배경색을 미리 설정하는 것이 좋습니다 (g.setBackground(..)).

또한 버퍼를 올바르게 설정하도록 채우기 전에 g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));을 수행해야 할 수도 있습니다 (대상 버퍼 데이터 무시, 소스 데이터 -이 경우 채우기 작업 만 사용). 이 값에 대한 기본값이 무엇인지 확실하지 않지만 올바른 작동을 위해 나중에 다시 설정해야합니다.

+0

감사합니다! setBackground가 해결책이었습니다. – Pierre

-1

나는이 문제를 전에 가지고 있었고, 정말 좁은 속임수로 해결했다. 화면

g2D.drawImage(image, null, /*your Image observer*/);