我想在使用RoundedRectangles而不是普通矩形的图中转换下面的示例,我知道剪切框有可能。 但我真的不知道它们将如何适用于我目前的情况,因为我目前没有使用g2d.fillXXX()函数。
图片: example http://img827.imageshack.us/img827/6048/cardbackgroundcut.jpg
代码:
private void createImage() {
bufferedImage = new BufferedImage(dimension.width, dimension.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = (Graphics2D)bufferedImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
int colorRed = 128;
int colorGreen = 0;
int colorBlue = 128;
for (int x = 0; x < dimension.width; x++) {
for (int y = 0; y < dimension.height; y++) {
int dx = Math.min(x, dimension.width - x);
int dy = Math.min(y, dimension.height - y);
if (dx < 10 || dy < 10) {
g2d.setColor(new Color(colorRed, colorGreen, colorBlue, 255 - Math.min(dx, dy)));
g2d.drawLine(x, y, x, y);
}
else {
g2d.setColor(new Color(colorRed, colorGreen, colorBlue, 192 - Math.min(dx, dy)));
g2d.drawLine(x, y, x, y);
}
}
}
}
所以基本上我希望图像的外边缘和内边缘都有一个圆角矩形,同时预先改变颜色。
任何线索如何实现这一目标?
问候。
答案 0 :(得分:1)
您可以使用RoundRectangle和4(已转)rectangles 将所有形状转换为Area并使用
area.exclusiveOr(ohterArea)
获得4个独立(不同渐变)部分的方法。 然后使用GradientPaint类逐个绘制这些部分,将所有这4个部分绘制(填充)到所需的渐变。
作为最后一步,您将绘画设置回静态颜色,然后绘制旧的RoundedRectangle(这样就可以获得边缘)