BufferedImageへの変換エラーです

このQ&Aのポイント
  • BufferedImageに変換したいんですが、引数の取り方が分かりません。
  • "srcimage1"を"BufferedImage"、"Image"で取ってやっても"BufferedImageにキャスト出来ません"という意味のエラー表示が出るばかりでお手上げです。
  • エラーの原因についてどうか宜しくお願いします。
回答を見る
  • ベストアンサー

BufferedImageへの変換エラーです

 こんにちは。java初心者です、宜しくお願いします。  BufferedImageに変換したいんですが、引数の取り方が分かりません。  "srcimage1"を"BufferedImage" 、"Image"で取ってやっても"BufferedImageにキャスト出来ま せん"という意味のエラー表示が出るばかりでお手上げです。    どなたか詳しい方、エラーの原因についてどうか宜しくお願いします。 ========================================= public class BufferedImage1 extends Applet { static BufferedImage srcimage1 , newimg ; static Image srcimage0 ; //static BufferedImage srcimage0 ; static BufferedImage source ; static BufferedImage target ; static Graphics g ; static Graphics2D g2 ; static Image img ; public void init() { this.setLocation( 0 , 0 ) ; setBackground( Color.red ) ; g2 = (Graphics2D)g ; srcimage0 = getImage( getDocumentBase() , "a.gif" ) ; srcimage1 = ( BufferedImage )srcimage0 ; newimg = change(srcimage1 , new BufferedImage(100 , 100 , BufferedImage.TYPE_4BYTE_ABGR_PRE)) ; } public void paint(Graphics g) { g2.drawImage(newimg , 0 , 0 , null ) ; } public BufferedImage change( BufferedImage source , BufferedImage target) { this.source = source ; this.target = target ; Graphics2D g2 = target.createGraphics() ; g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION , RenderingHints.VALUE_INTERPOLATION_BICUBIC) ; double scalex = (double) target.getWidth() / source.getWidth() ; double scaley = (double) target.getHeight() / source.getHeight() ; AffineTransform xform = AffineTransform.getScaleInstance(scalex , scaley) ; g2.drawRenderedImage(source , xform) ; g2.dispose() ; return target ; } }

  • Java
  • 回答数7
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.6

 #2さんへ  返信、ありがとうございます。  簡単なサンプルを使って実験してみました。 (A) public class AppletTest extends Applet {     BufferedImage image;          @Override     public void init() {         try {             URL url = new URL(this.getCodeBase().toString() + "test.JPG");             image = ImageIO.read(url);         } catch (MalformedURLException ex) {             System.err.println(ex);         } catch (IOException ex) {             System.err.println(ex);         }     }     @Override     public void paint(Graphics g) {         super.paint(g);         g.drawImage(image, 0, 0, this);     } } (B) public class AppletTest extends Applet {     BufferedImage image;          @Override     public void init() {         try {             File url = new File(this.getCodeBase().getPath() + "test.JPG");             image = ImageIO.read(url);         } catch (IOException ex) {             System.err.println(ex);         }     }     @Override     public void paint(Graphics g) {         super.paint(g);         g.drawImage(image, 0, 0, this);     } }  (A)は、 1.ファイルが自分のハードディスク内にありアプレットビューアーで実行。  成功 2.ファイルがWebサーバー中にあり、ブラウザで実行。  成功  ですが、(B)は、 1.ファイルが自分のハードディスク内にありアプレットビューアーで実行。  成功 2.ファイルがWebサーバー中にあり、ブラウザで実行。  失敗  でした。  やはり、Fileクラスを使うのは、問題が残るのではないでしょうか?

その他の回答 (6)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.7

#6さん あ、すみません。 ウェブ上ということだったのですね。 私はローカルファイルでしか試していません。 ローカルの画像を読み込む感じです。 そもそも、どこの画像を使うかなんて 質問にないですし、処理の書き方の問題ですので そこで意見を言われても正直参りますし、意味はないでしょう?

  • covachan
  • ベストアンサー率38% (46/120)
回答No.5

>>#4さんへ 確かにソースの書き方に問題はありましたが、 変更はしたものの、Fileでも動きますよ。 java docにもありますので問題はないと思いますが、 使い方的にということでしょうか? 参考に動作させてみたソース載せますので、 主さんも参考までに確認をしてみてください。 public void init() { this.setLocation( 0 , 0 ) ; setBackground( Color.red ) ; try{ g2 = (Graphics2D)g ; URL url = getCodeBase(); BufferedImage bi = ImageIO.read(new File(url.getPath()+"/a.gif")); newimg = change(bi, new BufferedImage(100 , 100 , BufferedImage.TYPE_4BYTE_ABGR_PRE)); }catch(Exception e){ e.printStackTrace(); } } public void paint(Graphics g) { g.drawImage(newimg , 0 , 0 , null ) ; } public BufferedImage change(BufferedImage source , BufferedImage target) { //this.source = source ; this.target = target ; Graphics2D g2 = target.createGraphics() ; g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION ,RenderingHints.VALUE_INTERPOLATION_BICUBIC) ; double scalex = (double) target.getWidth() / source.getWidth() ; double scaley = (double) target.getHeight() / source.getHeight() ; AffineTransform xform = AffineTransform.getScaleInstance(scalex , scaley) ; g2.drawRenderedImage(source , xform) ; g2.dispose() ; return target ; }

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.4

 こんにちは。  #2さんへ  Fileクラスではなく、URLクラスを使わないと、ウェブサーバーに上げたときに、うまくいかないのでは? BufferedImage bi = ImageIO.read(new File(getCodeBase()+ "a.gif"));     ↓ BufferedImage bi = ImageIO.read(new URL(getCodeBase().toString() + "a.gif"));

  • covachan
  • ベストアンサー率38% (46/120)
回答No.3

何でもかんでも投げるのはやめてください。 動作確認はできましたので最後のコメントを(狙いの動きかどうかはわかりませんが) エラーについてですが、画像はちゃんと読み込めてますか? パスを間違えていませんか? あと、 g2 = (Graphics2D)g ; の目的がわかりません。 以下の記述で画像は表示されました。 g.drawImage(newimg , 0 , 0 , null ) ; 後はご自分でがんばってください。

  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

何をされたいのかわからないのでわかる範囲ですが、 srcimage0 = getImage( getDocumentBase() , "a.gif" ) ; srcimage1 = ( BufferedImage )srcimage0 ; newimg = change(srcimage1 , new BufferedImage(100 , 100 , BufferedImage.TYPE_4BYTE_ABGR_PRE)); は BufferedImage bi = ImageIO.read(new File(getCodeBase()+ "a.gif")); newimg = change(bi, new BufferedImage(100 , 100 , BufferedImage.TYPE_4BYTE_ABGR_PRE)); みたいな感じでは無理ですか?

htgotk_001
質問者

お礼

 回答有難うございます。  下のように書き換えてやりましたが、 //Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException //at BufferedImage1.paint(BufferedImage1.java:47) のようなエラーコメントが出て、 「newimg = change( bi , new BufferedImage( 100 ,100 ,BufferedImage.TYPE_4BYTE_ABGR_PRE ) ) ;」 の箇所で newimg がNULL値をとっています。 どこが悪いのでしょうか、宜しくお願いします。 ====================================================================== public class BufferedImage1 extends Applet { static BufferedImage srcimage1 , newimg ; static Image srcimage0 ; static BufferedImage source ; static BufferedImage target ; static Graphics g ; static Graphics2D g2 ; static Image img ; public void init() { this.setLocation( 0 , 0 ) ; setBackground( Color.red ) ; g2 = (Graphics2D)g ; // srcimage0 = Toolkit.getDefaultToolkit().getImage("a.gif"); // srcimage1 = ( BufferedImage )srcimage0 ; // newimg = change(srcimage1 , new BufferedImage(100 , 100 , BufferedImage.TYPE_4BYTE_ABGR_PRE)) ; try { BufferedImage bi = ImageIO.read( new File(getCodeBase() + "a.gif" ) ) ; newimg = change( bi , new BufferedImage( 100 , 100 , BufferedImage.TYPE_4BYTE_ABGR_PRE ) ) ; } catch(Exception e){} } public void paint(Graphics g) { g2.drawImage(newimg , 0 , 0 , null ) ; } public BufferedImage change( BufferedImage source , BufferedImage target) { this.source = source ; this.target = target ; Graphics2D g2 = target.createGraphics() ; g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION , RenderingHints.VALUE_INTERPOLATION_BICUBIC) ; double scalex = (double) target.getWidth() / source.getWidth() ; double scaley = (double) target.getHeight() / source.getHeight() ; AffineTransform xform = AffineTransform.getScaleInstance(scalex , scaley) ; g2.drawRenderedImage(source , xform) ; g2.dispose() ; return target ; } }

  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

確認しましたが、何かいろいろと問題がありますね。 主さんのスキルでは問題解決は難しいと思いますが、 今回のポイントだけ書くと、 srcimage0 = getImage( getDocumentBase() , "a.gif" ) ; で取得できるオブジェクトの実体は私が確認した限り、 ToolkitImageでした。 ToolkitImageはImagaeのサブクラスですので、 同じImagaeのサブクラスであるBufferedImageへのキャストで失敗します。 で、どうすればいいかというと、そのままToolkitImageでコードを組み立てるか、 ToolkitImageからBufferedImageを再生成するしか現在のコードに合わせられないでしょう。

htgotk_001
質問者

お礼

>で、どうすればいいかというと、そのままToolkitImageでコードを組み立てるか、 >ToolkitImageからBufferedImageを再生成するしか現在のコードに合わせられないでしょう。 他の参考書を探してみましたが、よくわかりませんでした。 何とか教えて頂けないでしょうか。 宜しくお願いします。

関連するQ&A

  • イメージのリサイズが表示されない

    JAVA初心者です、宜しくお願い致します。 イメージをリサイズするコードを書きましたが、うまく表示されません。 コードにはエラーは出ていません、原因が分かりません。 ご教示宜しく致します。 ====================================================================== public class reSizedIImage extends Applet { Image img ; private MediaTracker tracker; BufferedImage bufimg ; BufferedImage re_img ; public void init() { setBackground( Color.white ) ; img = Toolkit.getDefaultToolkit().getImage( "a.jpg" ) ; tracker = new MediaTracker( this ) ; tracker.addImage( img , 1 ) ; try { //イメージのロードが完了するまで待機 tracker.waitForID( 1 ) ; } catch ( Exception ex ) { ex.printStackTrace() ; } int imgw = img.getWidth( this ) ; int imgh = img.getHeight( this ) ; System.out.println(" imgw = " + imgw + " imgh = " + imgh ) ; int re_width = 300 ; int re_height = 300 ; bufimg = new BufferedImage( img.getWidth( this ) , img.getHeight( this ) , BufferedImage.TYPE_INT_RGB ) ; re_img = new BufferedImage( re_width , re_height , BufferedImage.TYPE_INT_RGB ) ; AffineTransformOp ato = new AffineTransformOp ( AffineTransform.getScaleInstance ( ( double )re_width / img.getWidth( this ) , ( double )re_height / img.getHeight( this ) ) , null ) ; ato.filter( bufimg , re_img ) ; int re_w = re_img.getWidth(this); int re_h = re_img.getHeight(this); System.out.println(" re_img_w = " + re_w + " re_img_h = " + re_h ) ; } public void paint( Graphics g ) { g.drawImage( re_img , 200 , 200 , this ) ; } }

    • ベストアンサー
    • Java
  • 画像の縮小のプログラムのエラーについて教えて下さい

     java初心者です、宜しくお願いします。  画像の縮小のプログラムを色々と他のサンプルコードとかを参考にしながら 書きましたが、黒い四角形がWindowに表示されるだけです。  プログラム自体のエラーは表示されません。  一体どこが悪いのでしょうか、宜しくお願いします。 ===================================================== public class reSizedIImage extends Applet { Image img ; private MediaTracker tracker; BufferedImage bufimg ; BufferedImage re_img ; public void init() { setBackground( Color.white ) ; img = Toolkit.getDefaultToolkit().getImage( "a.jpg" ) ; tracker = new MediaTracker( this ) ; tracker.addImage( img , 1 ) ; try { // tracker.waitForID( 1 ) ; } catch ( Exception ex ) { ex.printStackTrace() ; } int imgw = img.getWidth( this ) ; int imgh = img.getHeight( this ) ; System.out.println(" imgw = " + imgw + " imgh = " + imgh ) ; int re_width = 300 ; int re_height = 300 ; bufimg = new BufferedImage( img.getWidth( this ) , img.getHeight( this ) , BufferedImage.TYPE_INT_RGB ) ; re_img = new BufferedImage( re_width , re_height , BufferedImage.TYPE_INT_RGB ) ; AffineTransformOp ato = new AffineTransformOp ( AffineTransform.getScaleInstance ( ( double )re_width / img.getWidth( this ) , ( double ) re_height / img.getHeight( this ) ) , null ) ; ato.filter( bufimg , re_img ) ; int re_w = re_img.getWidth(this); int re_h = re_img.getHeight(this); System.out.println(" re_img_w = " + re_w + " re_img_h = " + re_h ) ; } public void paint( Graphics g ) { g.drawImage( re_img , 200 , 200 , this ) ; } }

    • ベストアンサー
    • Java
  • 画像の上でペイント

    画像の上にお絵かきがしたいと思っています 今の段階では、書くことはできます。 しかし、書いたものを消すことができません・・・。 他のペイントのサンプルを見ましたが、消しゴム機能はただカラーを背景色と同色で上塗り(?)してるだけでした。 僕が求めているものとしては、書いてある物を消して背景の画像が映るというようにしたいんです!! ペイントパネルのソースの一部です 自分なりに必要だと思うところを抜き出してみました //鉛筆(黒) public void pat1(Graphics2D g2d) { rc = gc = bc = 0; count = 255; g2d.setStroke( new BasicStroke( 3.0F ) ); g2d.setPaint(new Color(rc, gc, bc, count)); g2d.fillOval(currentPoint.x, currentPoint.y, 10, 10); g2d.dispose(); } //消しゴム(白) public void pat2(Graphics2D g2d) { rc = gc = bc = 254; count = 0; g2d.setStroke( new BasicStroke( 3.0F ) ); g2d.setPaint(new Color(rc, gc, bc, count)); g2d.fillOval(currentPoint.x, currentPoint.y, 10, 10); g2d.dispose(); } //リスナークラスの定義 class MoveLis extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { Point p = e.getPoint(); if (offImage == null) { // ここは注意が必要 ⇒ BufferedImage.TYPE_INT_ARGB // BufferedImage.TYPE_INT_RGBを使うと下のレイヤーの画像が塗り消されてしまいます // アルファチャネルも追加しておく offImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); } Graphics2D g2d = (Graphics2D) offImage.createGraphics(); switch(graPattern){ case 1:pat1(g2d); break; case 2:pat2(g2d); break; } repaint(); //座標取得 currentPoint = e.getPoint(); } } public void paintComponent( Graphics g ) { super.paintComponent( g ); if ( offImage != null ) { g.drawImage( offImage, 0, 0, this ); } } 回答よろしくお願いします

  • 画像を表示させるプログラム

    こんばんわ。 現在、Javaで画像を表示させるアプレットを作っているのですが、画像が表示されません。 書いたソースは以下です。 import java.applet.Applet; import java.awt.*; /* <applet code="Panel.class" width="497" height="600"> </applet> */ public class Panel extends Applet { Image data; public void init() { data = getImage(getDocumentBase(),"2-1.gif"); } public void paint(Graphics g) { g.drawImage(data, 0, 0, data.getWidth(this), data.getHeight(this), this); } } 2-1.gifという画像ファイルを表示させたいと思っています。画像ファイルはソースファイルと同じディレクトリにあります。appletviewerで実行しているのですが画像がさっぱり表示されません。 SDKのバージョンは1.5を使っています。 お手数おかけしますが、ご教授の程よろしくおねがいします。

    • ベストアンサー
    • Java
  • javaでgraphicsの描画の件

    今日は javaでgraphicsの描画を行っていますが、CENTERのペインには、描画できますが、 それ以外のペイン(NORTH,WEST、EAST,、SOUTH)には、描画できないように思います。 Q1)この件について、コメント頂けますと大変助かります。 下記に、ソースコードを添付いたします。 =================== package pkg; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Line2D; import javax.swing.JFrame; import javax.swing.JPanel; public class SampleApp extends JFrame { public SampleApp(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(600, 300); this.add(new GPanel(), BorderLayout.WEST); this.add(new GPanel(), BorderLayout.CENTER); } public static void main(String[] args) { new SampleApp().setVisible(true); } } class GPanel extends JPanel { @Override public void paintComponent(Graphics g) { super.paintComponent(g); // int w = this.getWidth(); // int h = this.getHeight(); int w=200; int h=200; g.setColor(Color.RED); g.fillOval(0, 0, w/2, h/2); Graphics2D g2 = (Graphics2D)g; g2.draw(new Line2D.Double(40, 40, w,h)); g.setColor(Color.BLUE); g.setFont(new Font("Serif", Font.BOLD, 36)); g.drawString("Graphics draw!", 10, h - 50); // g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.draw(new Line2D.Double(30.0d, 50.0d, 180.0d, 140.0d)); g2.setPaint(Color.PINK); BasicStroke wideStroke = new BasicStroke(8.0f); g2.setStroke(wideStroke); g2.draw(new Line2D.Double(30.0d, 120.0d, 250.0d, 70.0d)); } }

    • ベストアンサー
    • Java
  • createImage()を使いコンパイル

    このプログラムをcreateImage()を使ってイメージを作りたいのですが自分で変更してもコンパイルできません><;どのように変更したらイメージをつくることができるのでしょうか?回答よろしくおねがいしまあす(^^; import java.awt.Color; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; import javax.swing.JComponent; import javax.swing.JFrame; class Test extends JComponent implements MouseMotionListener { public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new Test()); frame.setBounds(0 , 0 , 400 , 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); } Image image; public Test() { addMouseMotionListener(this); image = new BufferedImage(400, 300, BufferedImage.TYPE INT RGB); Graphics g = image.getGraphics(); g.setColor(new Color(0xFF, 0xFF, 0xFF)); g.fillRect(0, 0, 400, 300); }public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, this); } public void mouseDragged(MouseEvent e) { Graphics g = image.getGraphics(); g.setColor(new Color(0, 0, 0)); g.fillOval(e.getX() - 5, e.getY() - 5, 5 , 5); repaint(); }public void mouseMoved(MouseEvent e) {} }

  • createImage()を使い コンパイル

    このプログラムをcreateImage()を使ってイメージを作りたいのですが自分で変更してもコンパイルできません><;どのように変更したらイメージをつくることができるのでしょうか?回答よろしくおねがいしまあす(^^; import java.awt.Color; import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.awt.image.BufferedImage; import javax.swing.JComponent; import javax.swing.JFrame; class Test extends JComponent implements MouseMotionListener { public static void main(String[] args) { JFrame frame = new JFrame(); frame.getContentPane().add(new Test()); frame.setBounds(0 , 0 , 400 , 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE); } Image image; public Test() { addMouseMotionListener(this); image = new BufferedImage(400, 300, BufferedImage.TYPE INT RGB); Graphics g = image.getGraphics(); g.setColor(new Color(0xFF, 0xFF, 0xFF)); g.fillRect(0, 0, 400, 300); }public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, this); } public void mouseDragged(MouseEvent e) { Graphics g = image.getGraphics(); g.setColor(new Color(0, 0, 0)); g.fillOval(e.getX() - 5, e.getY() - 5, 5 , 5); repaint(); }public void mouseMoved(MouseEvent e) {} }

  • 任意の文字列をJAVAで画像化

    表題にある通り任意の文字列をJAVAで画像化したいと思い 下記サンプルを検索して見つけたのですが作成される画像は 真っ白な画像で文字列は表示されませんでした。 任意の文字列を画像として出力するにはどうすればよいでしょうか。 import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Test5 { public static void main(String[] args) { String str = "abc123"; new Test5().Create(str); System.out.println(str); } public void Create(String str) { int w=60; int h=17; try { //受け取った文字列を画像化 BufferedImage image=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); Graphics2D g2d=image.createGraphics(); g2d.setBackground(Color.WHITE); g2d.clearRect(0,0,w,h); g2d.setColor(Color.BLACK); g2d.drawString(str,0,0); ImageIO.write(image, "JPEG", new File("c:\\test.jpg")); } catch(Exception e) { e.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • JAVAのプログラミングについて質問です。

    現在、あるサイトを参考にして class AppCanvas extends Canvas{ BufferedImage image;//ウィンドウに表示するイメージ //コンストラクタ AppCanvas(){ image=loadImage("input.jpg");//表示用のイメージを取り込み } //イメージをファイルから取り込む BufferedImage loadImage(String name){ try{ FileInputStream in=new FileInputStream(name);//FileInputStreamを作る BufferedImage rv=ImageIO.read(in);//イメージを取り込む in.close();//閉じる return rv;//戻り値に読み込んだイメージをセット }catch(IOException e){ //エラー時の処理(エラーを表示)しnullを返す System.out.println("Err e="+e);//エラーを表示 return null;//null を返す } } //表示の必要があれば実行されるメソッド public void paint(Graphics g){ int x2=getWidth();//画面の幅を取得 int y2=getHeight();//画面の高さを取得 int iw=image.getWidth(this);//イメージの幅を取得 int ih=image.getHeight(this);//イメージの高さを取得 int x0=0;//画面左位置 int y0=0;//画面上端位置 int x1=x2/2;//画面中央位置(横) int y1=y2/2;//画5面中央位置(縦) int sX=300;//画像表示開始位置(水平方向) int sY=300;//画像表示開始位置(垂直方向) int eX=600;//画像表示流量位置(水平位置) int eY=600;//画表示終了位置(垂直位置) g.drawImage(image, x0,y0,x1,y1,this);//画面の左上にイメージを縮小して表示 g.drawImage(image,x1,y1,x2,y2,sX,sY,eX,eY,this);//画面右下に一部を拡大して表示 } } // //WindowAdapterは、WindowListerの機能を持ちますが、 //必要なメソッドだけを書けば、WindowListenerとして使えます // class Adapter extends WindowAdapter { //右上の「×」クリックされると呼び出される public void windowClosing(WindowEvent e){ System.exit(0);//アプリの終了 } } というプログラムを書き、添付した画像のように左上に取りこんだinputの画像、 その右下にその一部を拡大したものを表示、というものになっています。 これを用い、inputの画像を魚眼レンズで撮ったような画像にし、右下に表示される拡大されたものを、 魚眼レンズで撮ったような画像から、一般のレンズで撮ったような画像へ変換して表示したいと考えています。 その場合、どのようにソースコードを書き換えればいいでしょうか? ほとんどプログラミング経験がなく、困っています。

    • ベストアンサー
    • Java
  • 再描画されない

    お世話になります。WS_POPUPで作成したウィンドウにGDI+を用いて画像を表示させています。 そのウィンドウに、他のウィンドウ(最大化されていない)を重ねて動かすと、重なっていた部分が再描画されず真っ白になってしまいます。 最大化されたウィンドで隠した場合は正常に表示されます。 VC+2005です。よろしくお願いします。m(__)m //ウィンドウプロシージャWM_PAINT内 hdc = BeginPaint(hWnd, &ps); Image myImage(fn); MoveWindow(hWnd, 0, 0, myImage.GetWidth(), myImage.GetHeight(), 0); Graphics MyGraphics(hdc); MyGraphics.DrawImage(&myImage, 0, 0, myImage.GetWidth(), myImage.GetHeight()); EndPaint(hWnd, &ps);

専門家に質問してみよう