无缓冲图像的字母混合

发布于 2024-11-25 03:38:36 字数 275 浏览 3 评论 0原文

我想在 Graphics2D 上绘制一个形状,如果它与某个范围相交,则将其一部分着色为不同的颜色。我通过使用 AlphaComposite 和 AlphaComposite.SRC_IN 将 2 个形状绘制到 BufferedImage(原始形状和将导致颜色变化的区域)中来实现此目的。问题是,如果滚动画布,屏幕就会变得滞后,因为每次调用 Paint 方法时都会创建一个缓冲图像。

有没有办法在不使用缓冲图像对象的情况下实现相同的效果(两个形状重叠,只有第二个形状的重叠区域是彩色的)?

干杯, 最大限度

I'd like to draw a shape on a Graphics2D and colour a part of it different if it intersects a certain range. I managed to do this by drawing 2 shapes into a BufferedImage (the original shape and the area that will cause a change of colour) by using AlphaComposite and AlphaComposite.SRC_IN. The problem is that if the canvas is scrolled, the screen becomes laggy as every time the paint method is called, a buffered image is created.

Is there any way of achieving the same effect (2 shapes overlapping, only 2nd shape's overlap area is coloured) without using a buffered image object?

Cheers,
Max

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅紫色的梦幻 2024-12-02 03:38:36

我不确定我是否完全理解您想要做什么,但您不应该在每次调用绘制方法时创建缓冲图像;仅当要显示的对象发生更改时。

I'm not sure I undertand fully what you're trying to do, but you shouldn't create the buffered image each time the paint method is called; only when something is changed in the objects to display.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文