Folgender Code funktioniert wenn ich bei dem Aufruf von image.getScaledInstance Image.SCALE_FAST verwende, bei SCALE_SMOOTH kommt es zu einer ClassCastException bei dem Aufruf von g.drawImage
Vielleicht weiss jemand von euch mehr darüber?
Code:
public void drawImage(Graphics2D g, AffineTransform transform) {
Image image = getImage();
if (image==null) return;
int width=getWidth();
int height=getHeight();
if (myResolution>0){
final int oldWidth = width;
final int oldHeight = height;
width = (int)(oldWidth*transform.getScaleX()/72*myResolution);
height = (int)(oldHeight*transform.getScaleY()/72*myResolution);
if (width<oldWidth || height<oldHeight){
transform.scale( (double) oldWidth / width, (double) oldHeight / height);
image = image.getScaledInstance(width,height,Image.SCALE_SMOOTH);
}
}
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 0);
while(!tracker.checkID(0,true)) {
try {
tracker.waitForID(0);
} catch( InterruptedException ex ) {}
}
g.drawImage(image, transform, this);
}
java.lang.ClassCastException: [I
at java.awt.image.ColorModel.getAlpha(ColorModel.java:814)
at java.awt.image.ColorModel.getRGB(ColorModel.java:859)
at sun.awt.image.ImageRepresentation.convertToRGB(ImageRepresentation.java:271)
at sun.awt.image.ImageRepresentation.setPixels(ImageRepresentation.java:485)
at java.awt.image.AreaAveragingScaleFilter.accumPixels(AreaAveragingScaleFilter.java:196)
at java.awt.image.AreaAveragingScaleFilter.setPixels(AreaAveragingScaleFilter.java:235)
at sun.awt.image.OffScreenImageSource.sendPixels(OffScreenImageSource.java:73)
at sun.awt.image.OffScreenImageSource.produce(OffScreenImageSource.java:161)
at sun.awt.image.OffScreenImageSource.addConsumer(OffScreenImageSource.java:37)
at sun.awt.image.OffScreenImageSource.startProduction(OffScreenImageSource.java:51)
at java.awt.image.FilteredImageSource.startProduction(FilteredImageSource.java:116)
at sun.awt.image.ImageRepresentation.startProduction(ImageRepresentation.java:644)
at sun.awt.image.ImageRepresentation.drawToBufImage(ImageRepresentation.java:820)
at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:813)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:2863)
at pdrepgen.PduiImage.drawImage(PduiImage.java:254)
at pdrepgen.PduiRGImage.draw(PduiRGImage.java:315)
at pdrepgen.PduiRGTableRow.drawRow(PduiRGTableRow.java:1386)
at pdrepgen.PduiRGTableRow.draw(PduiRGTableRow.java:1481)
at pdrepgen.PduiRGTable.draw(PduiRGTable.java:1676)
at pdrepgen.PduiRGTable.draw(PduiRGTable.java:1546)
at pdrepgen.PduiRGArea.draw(PduiRGArea.java:3327)
at pdrepgen.PduiRGArea.draw(PduiRGArea.java:3183)
at pdrepgen.PduiRGPage.draw(PduiRGPage.java:665)
at pdrepgen.PduiRGDocument.draw(PduiRGDocument.java:1752)
at pdrepgen.PduiRGBuilder.paintComponent(PduiRGBuilder.java:1678)
at pdrepgen.PduiRGDrawingArea.paintComponent(PduiRGDrawingArea.java:114)
at javax.swing.JComponent.paint(JComponent.java:808)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JViewport.paint(JViewport.java:722)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paint(JComponent.java:817)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:557)
at javax.swing.JComponent.paintChildren(JComponent.java:647)
at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4794)
at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740)
at javax.swing.JComponent.paint(JComponent.java:798)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1312)
at javax.swing.JFrame.update(JFrame.java:392)
at sun.awt.RepaintArea.paint(RepaintArea.java:169)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3678)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Vielleicht weiss jemand von euch mehr darüber?