2011-05-04 4 views
1

구성 요소에서 여러 줄의 컬러 픽셀을 표시해야합니다. 선의 각 픽셀에는 색상이 지정됩니다. 어떤 종류의 구성 요소가 선을 만들기에 적합하거나 어떤 종류의 구성 요소가 픽셀을 유지하는 데 적합합니까?컬러 픽셀 라인

답변

0

나에게 가장 좋은 (하지만 아마도 가장 쉬운 방법은) GradientPaint 클래스와 비슷하지만 좀 더 유연한 색상 영역 설정을 허용하는 사용자 정의 Paint 클래스를 구현하는 것입니다.

그러면 회선을 그리기 바로 전에 Graphics2D.setPaint(myPaint)으로 전화 할 것입니다. Paint 구현 startend가 선상의 영역을 표시하는 0.0와 1.0 사이의 값을 함께 복용하는 방법을 제공 할 수 setColorForRegion(double start, double end, Color color)

.

Paint 클래스를 구현하는 데 조금 복잡 할 수도 있지만 이점은 색상 패턴을 유지하면서 선의 크기를 조정하고 원하는 방향으로 그릴 수 있다는 것입니다.

+0

그건 내가 시도한 첫 번째 솔루션과 비슷합니다. LinearGradientPaint를 사용하여 다각형을 페인트합니다. 나는 성능에 대해 걱정했다. 매 초마다 다각형을 채우기 위해 새로운 LinearGradientPaint를 생성했기 때문이다. – wotan2009

+0

JLabel을 사용하는 것은 가능한 해결책이 아닌 것처럼 보입니다. 선의 각 픽셀을 좌표의 구성 요소에 배치하고 a의 색상을 정의하는 값이 있어야하기 때문입니다. 그래서 좌표와 색상 값 픽셀을 나타내는 개체가 있습니다. 이제는 각 픽셀 객체를 올바른 색상으로 올바른 위치에 배치하는 선을 만드는 방법을 찾아야합니다. – wotan2009

+0

@ wotan2009 성능 문제를 측정 한 경우 (그리고 그 때만!), 그라디언트를 캐싱 할 수 있으며 외관에 영향을주는 것이 있으면 변경하면됩니다 – kleopatra

3

JComponent을 확장하고 paintComponent() 방법으로 선/픽셀을 칠하십시오.

+0

...이 작업은 * 색칠 된 선 그리기 문제 *를 다른 컨테이너로 옮깁니다. wotan에 이미 구성 요소가있는 것 같습니다. –

+0

약간 다르지만 nonResiziable 및 Resiziable Component의 페인팅은 GradientPaint (JLabel의 경우)에 대한 Andreas_D의 처리가 가장 쉽고 안전한 방법이어야합니다. – mKorbel