2011-01-22 3 views
1

나는 배경 비트 맵을 가지고 있으며 배경 비트 맵에 다른 비트 맵을 그려 넣고 있습니다. 서로의 위에 그려지고 레벨을 확대하면 아티펙트없이 정확하게 나타납니다. 원하는대로 정확하게 나타납니다. 하지만 내 목적을 위해 글꼴 비트 맵을 배경 비트 맵으로 병합해야하므로 기본적으로 하나의 항목이됩니다. 나는 분명히 내가 글꼴을 필요로하고있어 수준으로 확대 할 때 이제 아티팩트가 있습니다 ....이 실행시에 실시하고 내가 사용 솔루션이있다 할비트 맵에 그려지는 텍스트에서 아티팩트를 제거하는 방법

canvas2 = new Canvas(backgroundBitmap); 
canvas2.drawBitmap(fontBitmap.getBitmap(), null, rects.get(backgroundRectIndex), null); 
invalidate(); 

이 필요합니다. 나는 상당히 그래픽에 익숙하지 않은 몇 가지 기사 및 유사한 문제에 대한 질문을 읽고 나는 페인트 대신 dithering 놀고 해봤 어 및 null 대신 canvas2.drawBitmap 사용하여, 아무것도 도움이 될 것으로 보인다. 나는 이걸 보았습니다 ...

이것은 응용 프로그램이 내부적으로 메모리 내부 비트 맵을 생성하고 그 위에 무언가를 그려 나중에 화면에 표시하는 경우에는 적용되지 않습니다. 플랫폼은 드로잉 (Drawing)시 즉시 그러한 비트 맵을 자동으로 스케일합니다. 이러한 경우의 다른 부작용은 비트 맵 레벨에서 비트 맵에서 그려진 글꼴을 스케일링하여 오프 스크린 비트 맵이 마지막으로 디스플레이에 렌더링되어 스케일링 아티팩트가 생기는 것입니다.

link text

내 문제가 될 수도 같은 소리

하지만 어떻게 그것을 해결하는 방법은 무엇입니까? 어떤 도움이라도 대단히 감사 할 것입니다.

+0

배경 이미지보다 조금 주위를 연주 후, 나는 그것이 치수는 유물의 대부분을 제거 증대하는 것을 발견했다. 폰트 이미지를 다운 스케일링 할 때 본질적으로 같은 수의 픽셀을 제거 할 것이기 때문에 이것이 도움이되는 이유는 확실하지 않지만, 다시 확대하면 잘 보입니다. 나도 몰라,하지만 이건 내 일이 될거야. – honeal

답변

1

비트 맵을 확대하는 경우 filterBitmap 플래그를 해제해야합니다.

는 페인트에 그것은해야한다 :

paint.setFilterBitmap(false); 
+0

배경 이미지와 글꼴 이미지 또는 배경 또는 글꼴 모두에 대해 해제해야합니까? 두 가지 모두에 적용하면 실제로 나에게 더 나쁜 결과가됩니다. – honeal

+0

글꼴을 그리는 데 사용하는 페인트에서 사용하려고합니다. 위의 코드를 보면 null로 전달됩니다. – GuyNoir

+0

그것은 단지 추측입니다. 어떻게 확대하고 있니? 표면의 캔버스를 변형시키고 있습니까? – GuyNoir

관련 문제