【问题标题】:Alphablending without buffered image没有缓冲图像的 Alpha 混合
【发布时间】:2011-07-21 06:44:21
【问题描述】:

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

有没有什么方法可以在不使用缓冲图像对象的情况下实现相同的效果(2 个形状重叠,只有第 2 个形状的重叠区域被着色)?

干杯, 最大

【问题讨论】:

    标签: java bufferedimage alphablending shapes


    【解决方案1】:

    我不确定我是否完全理解您要执行的操作,但是您不应该在每次调用paint 方法时都创建缓冲图像;仅当要显示的对象发生更改时。

    【讨论】:

    • 好的,让我再澄清一下。我想显示的形状是图表。该图以蓝色填充。每当图表高于某个值时,它应该被涂成红色。我想先绘制图形并用一个矩形覆盖它,该矩形代表图形的填充区域变为红色的区域。每次移动滚动条时都会调用paint方法。
    • 我看不出您在评论中所说的任何内容如何阻止您实施莫里斯的明智建议,大意是......“缓存 BufferedImage 实例。在需要时更改它们。”
    • 你为什么不画一个矩形而不是创建一个缓冲图像?
    • 这就是我想要做的。如果您直接在画布上绘制,Alphablending 似乎不起作用...
    • 使用不透明度为 50% 的红色 setColor(new Color(255,0,0,128));
    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2015-11-04
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多