< prev index next >
src/java.desktop/windows/classes/sun/awt/windows/WTrayIconPeer.java
Print this page
@@ -26,20 +26,23 @@
package sun.awt.windows;
import java.awt.Graphics2D;
import java.awt.AWTEvent;
import java.awt.Frame;
+import java.awt.GraphicsEnvironment;
import java.awt.PopupMenu;
import java.awt.Point;
import java.awt.TrayIcon;
import java.awt.Image;
+import java.awt.geom.AffineTransform;
import java.awt.peer.TrayIconPeer;
import java.awt.image.*;
import sun.awt.AWTAccessor;
import sun.awt.SunToolkit;
import sun.awt.image.IntegerComponentRaster;
+import sun.java2d.pipe.Region;
final class WTrayIconPeer extends WObjectPeer implements TrayIconPeer {
static final int TRAY_ICON_WIDTH = 16;
static final int TRAY_ICON_HEIGHT = 16;
static final int TRAY_ICON_MASK_SIZE = (TRAY_ICON_WIDTH * TRAY_ICON_HEIGHT) / 8;
@@ -121,20 +124,25 @@
synchronized void updateNativeImage(Image image) {
if (isDisposed())
return;
boolean autosize = ((TrayIcon)target).isImageAutoSize();
+ AffineTransform tx = GraphicsEnvironment.getLocalGraphicsEnvironment().
+ getDefaultScreenDevice().getDefaultConfiguration().
+ getDefaultTransform();
+ int w = Region.clipScale(TRAY_ICON_WIDTH, tx.getScaleX());
+ int h = Region.clipScale(TRAY_ICON_HEIGHT, tx.getScaleY());
- BufferedImage bufImage = new BufferedImage(TRAY_ICON_WIDTH, TRAY_ICON_HEIGHT,
- BufferedImage.TYPE_INT_ARGB);
+ BufferedImage bufImage = new BufferedImage(w,
+ h, BufferedImage.TYPE_INT_ARGB);
Graphics2D gr = bufImage.createGraphics();
if (gr != null) {
try {
gr.setPaintMode();
- gr.drawImage(image, 0, 0, (autosize ? TRAY_ICON_WIDTH : image.getWidth(observer)),
- (autosize ? TRAY_ICON_HEIGHT : image.getHeight(observer)), observer);
+ gr.drawImage(image, 0, 0, (autosize ? w : image.getWidth(observer)),
+ (autosize ? h : image.getHeight(observer)), observer);
createNativeImage(bufImage);
updateNativeIcon(!firstUpdate);
if (firstUpdate) firstUpdate = false;
< prev index next >