< prev index next >
src/java.desktop/windows/classes/sun/awt/windows/TranslucentWindowPainter.java
Print this page
@@ -28,18 +28,20 @@
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.Window;
+import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import java.awt.image.VolatileImage;
import java.security.AccessController;
import sun.awt.image.BufImgSurfaceData;
import sun.java2d.DestSurfaceProvider;
import sun.java2d.InvalidPipeException;
import sun.java2d.Surface;
+import sun.java2d.pipe.Region;
import sun.java2d.pipe.RenderQueue;
import sun.java2d.pipe.BufferedContext;
import sun.java2d.pipe.hw.AccelGraphicsConfig;
import sun.java2d.pipe.hw.AccelSurface;
import sun.security.action.GetPropertyAction;
@@ -132,10 +134,12 @@
boolean done = false;
Image bb = getBackBuffer(repaint);
while (!done) {
if (repaint) {
Graphics2D g = (Graphics2D)bb.getGraphics();
+ g.transform(peer.getGraphicsConfiguration()
+ .getDefaultTransform());
try {
window.paintAll(g);
} finally {
g.dispose();
}
@@ -176,12 +180,16 @@
super(peer);
}
@Override
protected Image getBackBuffer(boolean clear) {
- int w = window.getWidth();
- int h = window.getHeight();
+ GraphicsConfiguration gc = peer.getGraphicsConfiguration();
+ AffineTransform transform = gc.getDefaultTransform();
+ int w = Region.clipRound(
+ window.getWidth() * transform.getScaleX());
+ int h = Region.clipRound(
+ window.getHeight() * transform.getScaleY());
if (backBuffer == null ||
backBuffer.getWidth() != w ||
backBuffer.getHeight() != h)
{
flush();
< prev index next >