2011-05-04 128 views
1

在组件中,我必须显示几行彩色像素。该线的每个像素都被赋予一种颜色。什么样的组件适合构建线条或哪种组件适合用于存储像素?彩色像素行

回答

0

对我来说,最好的(但也许不是最简单的)方法是实现一个自定义的Paint类,它允许设置颜色区域 - 有点像GradientPaint类,但更灵活。

然后,在画线之前,您可以拨打Graphics2D.setPaint(myPaint)

Paint实施可以提供一个方法setColorForRegion(double start, double end, Color color)startend服用0.0和1.0之间的值来标记就行的区域。

实现Paint类可能有点复杂,但好处是,您可以调整线的大小并在保留颜色模式的同时在任何方向绘制它们。

+0

这有点像我尝试的第一个解决方案。我正在使用LinearGradientPaint绘制多边形。我担心性能,因为我每秒钟都会创建一个新的LinearGradientPaint以每秒填充一个多边形。 – wotan2009 2011-05-04 12:57:03

+0

使用JLabel似乎不是一个可行的解决方案,因为行中的每个像素都应该放置在其坐标中的组件中,并且a具有定义其颜色的值。所以我有一个对象用坐标和颜色值表示像素。现在我必须找到一种方法来构建将每个像素对象以正确的颜色放置在正确位置的线。 – wotan2009 2011-05-04 13:32:59

+0

@ wotan2009如果您衡量(并且只有这样!)性能问题,您可以缓存渐变,并且只有在影响其外观的任何内容发生变化时才重建 – kleopatra 2011-05-04 14:06:51

3

只需延伸JComponent并绘制paintComponent()方法中的线条/像素。

+0

...这只是将*彩色线条绘制问题*移动到另一个容器中。看起来wotan已经有一个组件。 – 2011-05-04 11:04:30

+0

和稍微不同的是绘制nonResiziable和Resiziable Component,看起来像Andreas_D的关于GradientPaint(在JLabel中)的消解应该是最简单和最安全的方式 – mKorbel 2011-05-04 11:26:49