• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#での画像ファイルをドラッグアンドドロップで描画)

C#での画像ファイルをドラッグアンドドロップで描画

このQ&Aのポイント
  • C#で画像ファイルをドラッグアンドドロップで描画させるプログラムを作りたいが、エラーが発生してしまう。
  • ファイル名の画像ファイルをForm1に描画させる部分でエラーになってしまい、修正方法が分からない。
  • 質問者はC#でドラッグアンドドロップで画像ファイルを描画させるプログラムを作りたいが、問題が発生している。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

DragEventArgsには Graphicsがありません やるとすれば Image型または Bitmap型の変数をフォームに準備しておいて これにファイルから読み込んでおいて Paintイベントで描画しましょう public partial class Form1 : Form {   Image[] img;   private void Form1_DragDrop(object sender, DragEventArgs e)   {     if (e.Data.GetDataPresent(DataFormats.FileDrop))     {       int n = 0;       Image tmp = null;       foreach (string fileName         in (string[])e.Data.GetData(DataFormats.FileDrop))       {         Image tmp = null;         try         {           img = new Bitmap( fileName );           Array.Resize( ref img, n + 1 );           img[n] = new Bitmap( fileName );           n++;         }         catch(Exception)         {         }       }     }   }   private void Form1_Paint(object sender, PaintArgs e )   {     if ( img != null )     {       int x = 0;       for( int n = 0; n < img.length; n++ )       {         e.Graphics.DrawImage( img[n], x, 0 );         x += img[n].Length;         n++;       }     }   } } といった具合で ・・・

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

DragDropでファイルからイメージを読み込んだら 再描画のためにInvalidate()を呼んでやればいいでしょう

usatan2
質問者

お礼

おかげさまで、希望する描画ができました。 redfox63さん、今回も応答ありがとうございました。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Paintイベントを一部修正 m(__)m n++; が不要でした   private void Form1_Paint(object sender, PaintArgs e )   {     if ( img != null )     {       int x = 0;       for( int n = 0; n < img.length; n++ )       {         e.Graphics.DrawImage( img[n], x, 0 );         x += img[n].Length;         // これは不要でした ・・・         // n++;       }     }   }

usatan2
質問者

お礼

早速の回答ありがとうございました。 教示いただいたリストではエラーが出ましたので、 一方の、Image tmp = null; を削除し、 img = new Bitmap(fileName);をtmp = new Bitmap(fileName); に修正しましたら、描画しました!! でも、そのままでは描画せず、別のウインドの影に一旦隠して再度表示すると描画されました。Form1_Paintをどこかで強制的に呼び出さないとだめということでしょうか?

関連するQ&A

専門家に質問してみよう