• 締切済み

C# 画像ファイルの更新

redfox63の回答

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

bmpSource1の読み込みを ファイルネームの指定ではなく FileStreamを使えばいいようです System.IO.FileStream fs = new System.IO.FileStream(sCurDir + "\\AAA.bmp", System.IO.FileMode.Open); bmpSource1 = new Bitmap(fs); fs.Close(); bmpSource2 = new Bitmap(sCurDir+ "\\BBB.bmp"); pictureBOx1.Image = bmpSource1; // ファイルの保存形式を指定しないと png形式になってしまったかも // 2013とかだと 拡張子からの自動判断に直ってるのかなぁ … // 当方 2010Express bmpSource2.Save(sCurDir + "\\AAA.bmp", System.Drawing.Imageing.ImageFormat.Bmp);

TinyPine
質問者

お礼

redfox63様 早速のご回答、有難う御座いました。 今、自宅のPCで動作確認を行い、正常に更新出来ており、障害が発生しない事を確認しました。 .Netを使って居て、使い勝手が違うので戸惑っていました。 やはりファイル類、Open、Get、Closeと並んで無いと安心出来ません。 Saveにもファイル形式指定があるのですね。人に見せるサンプルプログラムなのでファイル形式指定付きに変更します。 有難う御座いました。

関連するQ&A

  • VB2010で、キャプチャしたものを貼り付けるにはどうしたらいいのでし

    VB2010で、キャプチャしたものを貼り付けるにはどうしたらいいのでしょうか。 ご存知の方教えてください。よろしくお願いします。 ???の部分のコードがわかりません。 'キャプチャする Dim copy_bmp As New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height) Me.DrawToBitmap(copy_bmp, New Rectangle(0, 0, Me.PictureBox1.Width, Me.PictureBox1.Height)) PictureBox3 = copy_bmp??? copy_bmp.Dispose()

  • C# Gifアニメーション画像の読込みと表示???

    FormでGIFアニメーション画像を読込み、pictureBoxに表示します (1)の方法では思った通りに表示されます Bitmap GifImage1 = new Bitmap(100, 100); ・・・・・ (1) GifImage1 = new Bitmap(@"f:\TestPattern.gif"); pictureBox1.Image = GifImage1; しかし(2)の方法ではFormをロードするProgram.csでエラーを起こしてしまします Bitmap GifImage2 = new Bitmap(100, 100); ・・・・・ (2) FileStream ImageStream = new FileStream(@"f:\TestPattern.gif", FileMode.Open, FileAccess.Read); GifImage2 = (Bitmap)System.Drawing.Bitmap.FromStream(ImageStream); ImageStream.Close(); pictureBox2.Image = GifImage2; (1)の方法ではファイルがロックされると聞いておりますので、通常は(2)を使用しています またTestPattern.gifがアニメーション画像ではなく単なるGif画像の際は(1)(2)双方ともOKです この辺りの理由をボンクラの私にも分かるように教えてください お願い致します

  • 【C#】GraphicsのhDcについて

    C#でアプリケーションを作成しています。 PictureBoxに読み込んだ画像を画像処理ライブラリにGraphicsのhDcを渡し、処理をさせたいのですが、 Bitmap bmp = new Bitmap("ファイル名"); pictureBox1.Image = bmp; Graphics g = Graphics.fromImage(pictureBox1.Image); IntPtr hdc = g.GetHdc(); というふうに作った[hdc]を渡すと真っ黒な画像が表示されてしまいます。 ピクチャーボックス1のPaintイベント pictureBox1_Paint(object sender, PaintEventArgs e) { // pictureBox1.Imageには上と同じ画像を読み込み済み IntPtr hdc = e.Graphics.GetHdc(); } というふうに作った[hdc]を渡すと、正常に処理された画像が表示されます。 質問なのですが、PictureBox1.Imageから作ったGraphicsとPaintEventArgs.Graphicsはどのような差があるのでしょうか? また、PaintEventArgsを使わず同じようなGraphicsを作るにはどうしたらいいでしょうか? 至らない説明で申し訳ありませんが、ご助言をよろしくお願いします。

  • C#でピクチャーボックスに文字を描画、出力する方法

    以下のことをやりたいのですが、できなくて困っています。 Microsoft Visual Studio 2010 Expressを使っています。 1、ピクチャーボックスに色画像を表示 2、ピクチャーボックスに文字(説明)も表示 3、その画像を出力 2まではできたのですが、2までできたあとに、プログラムのウインドウ上に他のウインドウ(マイコンピュータやマイドキュメントなど)が表示されたり、プログラムのウインドウを最小化したりして、一度隠れてしまうと文字が消えてしまうようで、画像のみの出力になってしまいました。(画像のみの出力には成功しています) なんとかして出力する方法はないでしょうか。 以下がソースです。よろしくお願いします。 ボタン1 Bitmap bmp6 = new Bitmap(800, 600); int sr, sg, sb, i, j; sr = 100; sg = 100; sb = 100; for (i = 0; i < 40; i++) { for (j = 0; j < 40; j++) { bmp6.SetPixel(i, j, Color.FromArgb(sr, sg, sb)); } pictureBox1.Image = bmp6; } ボタン2 string s1 = "文字"; Font newfont = new Font("MS明朝", 10); pictureBox1.CreateGraphics().DrawString(s1, newfont, Brushes.Blue, 50, 200); ボタン3 pictureBox1.DrawToBitmap(bmp, new Rectangle(0, 0, 800, 600)); bmp.Save(c:\\a.png);

  • C#でのpngからbmpへの変換について

    プログラミングの初心者です。 現在、以下の点について困っています。 現在業務で画像ファイルをpngからbmpに変換するプログラムを作成しています。 以下のようなソースで対象のファイルを変換してみたのですが、変換後の画像ファイルをアドビのフォトショで開こうとすると読み込みに失敗します。 ※usingでDrawing.Imagingは宣言済み Bitmap bmp = new Bitmap("failename.png"); bmp.Save("failname.bmp", ImageFormat.Bmp); bmp.Dispose(); 念のため、ペイントで適当な画像を作成して同様の処理をしてみたところ、そちらは上手く変換できたようで、フォトショでも普通に開けることが出来ました。 対象の画像ファイルは、変換前ではちゃんとフォトショで開けることが出来ます。 フォトショでもちゃんと読み込めるファイルを作成するには、まだソースが足りないのでしょうか? 知っている方がおられましたら、アドバイスをお願いします。

  • VB.NETの画像の切り取りについて教えて

    Dim bmp1 As Bitmap Dim bmp2 As Bitmap となっていて、bmp1にファイルから読み込んだ画像を入れてあり bmp2に切り出し位置とサイズを指定して、bmp1の一部を入れたいのですが、 どのようにやれば良いでしょうか。 PictureBoxを使う方法はサンプルを見つけたのですが、 PictureBoxを使わずにやりたいのですが方法がありましたら ご教授頂けないでしょうか。宜しくお願い致します。 Frameworkは1.1です。

  • C# Picturebox 縮小・拡大時の表示方法

    下記のようなコードで、画像の拡大・縮小を行っています。 ただ画像の縮小時、PictureBox内の余分な部分について、(1)縮小前の 画像が残像のように表示されています。 また通常、画像の拡大・縮小前の画像では画像サイズがPictureBoxよりも大きいサイズの 場合、スクロールバーを表示するようにしています。 (2)でも、画像拡大時、スクロールバーが出るには出ているのですが、画像全てを 確認できません。 (1)、(2)の問題について、解決方法をご存知の方、お願いです、、、教えてください。。。 かなり、困ってます。。。。 Bitmap img = new Bitmap(pictureBox1.Image.Tag.ToString()); //PictureBox1のGraphicsオブジェクトの作成 Graphics g = pictureBox1.CreateGraphics(); //拡大・もしくは縮小 RectangleF rect = new RectangleF(0, 0, zoom * img.Width, zoom * img.Height); g.DrawImage(img, rect); //BitmapとGraphicsオブジェクトを破棄 img.Dispose(); g.Dispose();

  • C#で画像をクリップボードへのコピーと貼り付けについて

    GraphicsオブジェクトのDrawImageメソッドを使って画像を表示させています。 この画像をクリップボードへコピーしてほかのところに貼り付けしたいのですが、クリップボードへはClipboard.SetDataObject()を使用すればよいと思っています。 しかし、どのように使ったらいいのかよくわかりません。現在のソースは以下のようになっています。 //Bitmapオブジェクトの作成(画像ファイルを読み込む) Bitmap bmap = new Bitmap(@"C:\test2.bmp"); //元の画像からの切り取り範囲の指定 RectangleF rectSrc = new RectangleF                 (pointX,pointY,WidthX,WidthY); //貼り付け先を指定範囲の指定 RectangleF rectDst = new RectangleF(0, 0, DstX,DstY); //PictureBox1のGraphicsオブジェクトの作成 Graphics g= pictureBox1.CreateGraphics(); //画像の描画 g.DrawImage(bmap, rectDst,rectSrc,GraphicsUnit.Pixel); //クリップボードへのコピー Clipboard.SetDataObject(g); よろしくおねがいいたします。

  • pictureboxの画像を削除するには?

    Visual C# 2008を使用しています。 ボタンを押すとpictureboxに画像が表示されるプログラムを作成しました。 今度は、その表示された画像をクリックし、別のボタンを押すことでその画像が削除できるようにしたいと思っているのですが、うまくプログラムできません。 誰か教えていただけないでしょうか? ソースコードは以下のようになっています。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace algorithm { public partial class Form1 : Form { int space = 10; public Form1() { InitializeComponent(); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { } private void kihonsyori_Click(object sender, EventArgs e) { if (this.pictureBox1.Image == null) { Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\基本処理箱.png"); Graphics g = pictureBox1.CreateGraphics(); g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height); space += 50; img.Dispose(); g.Dispose(); } else { this.pictureBox1.Image.Dispose(); this.pictureBox1.Image = null; } } private void groupBox1_Enter(object sender, EventArgs e) { } private void pictureBox1_Click(object sender, EventArgs e) { } private void hanpuku_Click(object sender, EventArgs e) { if (this.pictureBox1.Image == null) { Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\反復箱.png"); Graphics g = pictureBox1.CreateGraphics(); g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height); space += 80; img.Dispose(); g.Dispose(); } else { this.pictureBox1.Image.Dispose(); this.pictureBox1.Image = null; } } private void sentaku_Click(object sender, EventArgs e) { if (this.pictureBox1.Image == null) { Bitmap img = new Bitmap(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\Projects\algorithm\algorithm\picture\選択箱.png"); Graphics g = pictureBox1.CreateGraphics(); g.DrawImage(img, 0, space, 0.4F * img.Width, 0.3F * img.Height); space += 80; img.Dispose(); g.Dispose(); } else { this.pictureBox1.Image.Dispose(); this.pictureBox1.Image = null; } } private void sakujyo_Click(object sender, EventArgs e) { pictureBox1.Image = null; space = 0; } } }

  • 二つの画像を並べて表示

    ひとりで独学でVC++2005を勉強してるのですが、pictureBoxでつまずいます。初心者ですがわかりやすく教えて頂けたらと思います。 やりたい事はタイトル通り、画像を単純に並べて表示したいだけなのですが、WEB場で検索しても的を得た答えが見つかりませんでした。 二つの画像を読み込んで、新しいBitmapデータに書き込めばいいのかと思ったのですが、どうやっていいのか見当が付きません。 Bitmap^ bmpA = gcnew Bitmap("testAA.bmp"); Bitmap^ bmpB = gcnew Bitmap("testAB.bmp"); int w = bmpA->Width + bmpB->Width; int h = bmpA->Height + bmpB->Height; Bitmap^ bmp = gcnew Bitmap(w,h); //ここで何やっていいかわかりません。 pictureBox1->Image = bmp; 最終的にはタイル的にどんどん並べて行きたいと考えています。 助言の方よろしくお願いします。