
C#で画像ファイルをドラッグアンドドロップで描画させるプログラムを作りたいのですが、うまくできません。
ドラッグしたファイル名を読み取る部分までは動作確認できています。このファイル名の画像ファイルをForm1に描画させる部分でエラーになってしまいます。
どのように修正したらよいのかわからないのでお助けください。
-----
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Drag
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
Graphics g = e.Graphics; // <------ エラーになる。
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
foreach (string fileName
in (string[])e.Data.GetData(DataFormats.FileDrop))
{
g.DrawImage(new Bitmap(fileName, new PointF(10F, 50F)));
// Console.WriteLine(fileName); // 動作確認
}
}
}
}
}
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++;
}
}
}
}
といった具合で ・・・
No.3
- 回答日時:
DragDropでファイルからイメージを読み込んだら
再描画のためにInvalidate()を呼んでやればいいでしょう
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++;
}
}
}
早速の回答ありがとうございました。
教示いただいたリストではエラーが出ましたので、
一方の、Image tmp = null; を削除し、
img = new Bitmap(fileName);をtmp = new Bitmap(fileName);
に修正しましたら、描画しました!!
でも、そのままでは描画せず、別のウインドの影に一旦隠して再度表示すると描画されました。Form1_Paintをどこかで強制的に呼び出さないとだめということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- 英語 『G19 Gen5 MOS - Modular Optic System for Gen5』 の 『 1 2023/03/05 13:37
- 英語 From the data mentioned that extracted from the cu 1 2023/01/25 19:55
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】クラスのメンバ変数のア...
-
サブクラスでセッターを呼び出す
-
コンパイルはできるのに・・・・
-
C#で、引数にクラスの配列の参...
-
arrayの中にarrayをほぞんする...
-
初心者ですが教えて下さい
-
javaでべき乗余
-
JAVA EOFの検出 (条件文で「...
-
C#で、デリゲートからその関数...
-
Javaのオーバーロードを使った問題
-
一様乱数?疑似乱数?
-
ウィンドウサイズを変更しても...
-
ビープ音をなめらかに鳴らしたい
-
コンパイルできません
-
Javaで以下の様な整数の累乗の...
-
Java 四角を書くツール
-
JAVAのプログラム 何が悪いか...
-
javaappletでgifアニメーション
-
「配列定数は、イニシャライザ...
-
AndroidのBitmapのロードについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
メインが含まれていません
-
式の型は配列型で int に解決済...
-
Java 初心者 int型の取り扱い方
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
javaでカレンダー作成
-
intが負の時に投げる例外はあり...
-
C#で実行時にメソッドの返り値...
-
JUnit4のアノテーションについて
-
6桁の数字を重複なしでランダム...
-
JAVA エラー 式の開始が不正で...
-
java spring でエラーが出て困...
-
C#でバブルソート
-
プログラムの作り方
-
全組み合わせの出力
-
SwingでJtableのヘッダ行が表示...
-
アンマネージDLLで、ダイアログ...
-
c# デリゲート関連の命名について
-
複数のボタンを配置し、それぞ...
おすすめ情報