Java - rounded corner panel with compositing in paintComponent

Java - rounded corner panel with compositing in paintComponent,第1张

Java - rounded corner panel with compositing in paintComponent

With respect to your performance concerns the Java 2D Trickery article
contains a link to a very good explanation by Chet Haase on the usage of
Intermediate
Images.

I think the following excerpt from O’Reilly’s Java Foundation Classes in a
Nutshell
could be helpful to you in order to make sense of the
AlphaComposite behaviour and why intermediate images may be the necessary
technique to use.

The AlphaComposite Compositing Rules

The SRC_OVER compositing rule draws a possibly translucent source color over
the destination color. This is what we typically want to happen when we
perform a graphics operation. But the AlphaComposite object actually allows
colors to be combined according to seven other rules as well.

Before we consider the compositing rules in detail, there is an important
point you need to understand. Colors displayed on the screen never have an
alpha channel. If you can see a color, it is an opaque color. The precise
color value may have been chosen based on a transparency calculation, but,
once that color is chosen, the color resides in the memory of a video card
somewhere and does not have an alpha value associated with it. In other
words, with on-screen drawing, destination pixels always have alpha values
of 1.0.

The situation is different when you are drawing into an off-screen image,
however. As you’ll see when we consider the Java 2D BufferedImage class
later in this chapter, you can specify the desired color representation when
you create an off-screen image. By default, a BufferedImage object
represents an image as an array of RGB colors, but you can also create an
image that is an array of ARGB colors. Such an image has alpha values
associated with it, and when you draw into the images, the alpha values
remain associated with the pixels you draw.

This distinction between on-screen and off-screen drawing is important
because some of the compositing rules perform compositing based on the alpha
values of the destination pixels, rather than the alpha values of the source
pixels. With on-screen drawing, the destination pixels are always opaque
(with alpha values of 1.0), but with off-screen drawing, this need not be
the case. Thus, some of the compositing rules only are useful when you are
drawing into off-screen images that have an alpha channel.

To overgeneralize a bit, we can say that when you are drawing on-screen, you
typically stick with the default SRC_OVER compositing rule, use opaque
colors, and vary the alpha value used by the AlphaComposite object. When
working with off-screen images that have alpha channels, however, you can
make use of other compositing rules. In this case, you typically use
translucent colors and translucent images and an AlphaComposite object with
an alpha value of 1.0.



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5017051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存