C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

pictureBox save方法

[トピック内 28 記事 (1 - 20 表示)]  << 0 | 1 >>

■100179 / inTopicNo.1)  pictureBox save方法
  
□投稿者/ 初心者K (1回)-(2022/07/08(Fri) 17:57:17)

分類:[C#] 

開発環境 Microsoft Visual Studio Community 2022
言語 C#

pictureBox内に表示されている画像をSAVEしたいのですが、うまくいきません。
元の画像がSAVEされてしまいます。
pictureBoxの範囲に映っている画像をSAVEしたいです。


pictureBox.ImageLocation = @"C:\smp.bmp"; // bmpファイル読込

//拡大して中心に移動させる
pictureBox.Width = (int)(1368 * 2);
pictureBox.Height = (int)(912 * 2);

nPosX = (int)(((centerPosX) - pictureBox.Width) / 2);
nPosY = (int)(((centerPosY) - pictureBox.Height) / 2);
//中心に移動させる
pictureBox.Location = new Point(nPosX, nPosY);

// SAVE
pictureBox.Image.Save(@"test.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);


すみません、誰か解る方いましたら、ご教授お願い致します。




引用返信 編集キー/
■100180 / inTopicNo.2)  Re[1]: pictureBox save方法
□投稿者/ KOZ (270回)-(2022/07/08(Fri) 19:01:32)
2022/07/08(Fri) 19:02:35 編集(投稿者)
No100179 (初心者K さん) に返信
> pictureBoxの範囲に映っている画像をSAVEしたいです。

Control.DrawToBitmap で Bitmap にコントロールの内容を描画できます。

using System.Drawing;

using (var bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height)) {
    pictureBox1.DrawToBitmap(bmp, new Rectangle(Point.Empty, pictureBox1.Size));
    bmp.Save(@"test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}

図表モードにするのをどうも忘れちゃうなぁ(^_^;)

引用返信 編集キー/
■100199 / inTopicNo.3)  Re[2]: pictureBox save方法
□投稿者/ 初心者K (2回)-(2022/07/11(Mon) 09:30:08)
No100180 (KOZ さん) に返信
> 2022/07/08(Fri) 19:02:35 編集(投稿者)
>
> ■No100179 (初心者K さん) に返信
>>pictureBoxの範囲に映っている画像をSAVEしたいです。
>
> Control.DrawToBitmap で Bitmap にコントロールの内容を描画できます。
>
> using System.Drawing;
>
> using (var bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height)) {
> pictureBox1.DrawToBitmap(bmp, new Rectangle(Point.Empty, pictureBox1.Size));
> bmp.Save(@"test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
> }
>
> 図表モードにするのをどうも忘れちゃうなぁ(^_^;)



ありがとうございます。
やってみましたが、元の画像がSAVEされてしまいます。。



引用返信 編集キー/
■100200 / inTopicNo.4)  Re[3]: pictureBox save方法
□投稿者/ KOZ (277回)-(2022/07/11(Mon) 10:15:30)
No100199 (初心者K さん) に返信
> やってみましたが、元の画像がSAVEされてしまいます。。

えー!そんなわけはないんですが、確認する画像を間違っていません?
test.jpg を削除してからやってみたらどうなります?

念のため、PictureBox に設定したプロパティを教えてください。
引用返信 編集キー/
■100201 / inTopicNo.5)  Re[4]: pictureBox save方法
□投稿者/ 初心者K (3回)-(2022/07/11(Mon) 10:33:33)
No100200 (KOZ さん) に返信
> ■No100199 (初心者K さん) に返信
>>やってみましたが、元の画像がSAVEされてしまいます。。
>
> えー!そんなわけはないんですが、確認する画像を間違っていません?
> test.jpg を削除してからやってみたらどうなります?
>
> 念のため、PictureBox に設定したプロパティを教えてください。


ありがとうございます。
消してやってますが、ダメみたいです。
プロパティ送ります。貼り付けられないので書きます
すみません。大文字小文字入り乱れて申し訳ないです。

Name pictureBox
AccessibleRole default
Anchor none
Backgroundimagelayout Tile
borderStyle None
cursor default
dock none
enable true
generateMember true
image なし
intialimage system.drawing.bitmap
Location 0,0
locked false
Margin 3,3,3,3
maximumSize 0,0
minimumSize 0,0
modifiers private
padding 0,0,0,0
refreshinterval 33
size 1368,912
sizemode Zoom
useWaitCursor false
visible true
waitonload false








引用返信 編集キー/
■100202 / inTopicNo.6)  Re[5]: pictureBox save方法
□投稿者/ 初心者K (4回)-(2022/07/11(Mon) 10:36:02)
No100201 (初心者K さん) に返信
> ■No100200 (KOZ さん) に返信
>>■No100199 (初心者K さん) に返信
> >>やってみましたが、元の画像がSAVEされてしまいます。。
>>
>>えー!そんなわけはないんですが、確認する画像を間違っていません?
>>test.jpg を削除してからやってみたらどうなります?
>>
>>念のため、PictureBox に設定したプロパティを教えてください。
>
>
> ありがとうございます。
> 消してやってますが、ダメみたいです。
> プロパティ送ります。貼り付けられないので書きます
> すみません。大文字小文字入り乱れて申し訳ないです。
>
> Name pictureBox
> AccessibleRole default
> Anchor none
> Backgroundimagelayout Tile
> borderStyle None
> cursor default
> dock none
> enable true
> generateMember true
> image なし
> intialimage system.drawing.bitmap
> Location 0,0
> locked false
> Margin 3,3,3,3
> maximumSize 0,0
> minimumSize 0,0
> modifiers private
> padding 0,0,0,0
> refreshinterval 33
> size 1368,912
> sizemode Zoom
> useWaitCursor false
> visible true
> waitonload false
>
>
関係するか解りませんが、
 ErrorImage x System.Drowing.Bitmap になっています。
引用返信 編集キー/
■100203 / inTopicNo.7)  Re[1]: pictureBox save方法
□投稿者/ furu (164回)-(2022/07/11(Mon) 10:41:12)
No100179 (初心者K さん) に返信
> pictureBox内に表示されている画像をSAVEしたいのですが、うまくいきません。
> 元の画像がSAVEされてしまいます。
> pictureBoxの範囲に映っている画像をSAVEしたいです。
pictureBoxの大きさ(Width, Height)変えて
pictureBoxの位置(Left, Top)変えただけなので
pictureBoxの範囲に映っている画像は変わっていないのでは?

親のControlをSAVEしてみてはどうですか?
引用返信 編集キー/
■100204 / inTopicNo.8)  Re[6]: pictureBox save方法
□投稿者/ 初心者K (5回)-(2022/07/11(Mon) 10:49:35)
No100202 (初心者K さん) に返信
> ■No100201 (初心者K さん) に返信
>>■No100200 (KOZ さん) に返信
> >>■No100199 (初心者K さん) に返信
>>>>やってみましたが、元の画像がSAVEされてしまいます。。
> >>
> >>えー!そんなわけはないんですが、確認する画像を間違っていません?
> >>test.jpg を削除してからやってみたらどうなります?
> >>
> >>念のため、PictureBox に設定したプロパティを教えてください。
>>
>>
>>ありがとうございます。
>>消してやってますが、ダメみたいです。
>>プロパティ送ります。貼り付けられないので書きます
>>すみません。大文字小文字入り乱れて申し訳ないです。
>>
>>Name pictureBox
>>AccessibleRole default
>>Anchor none
>>Backgroundimagelayout Tile
>>borderStyle None
>>cursor default
>>dock none
>>enable true
>>generateMember true
>>image なし
>>intialimage system.drawing.bitmap
>>Location 0,0
>>locked false
>>Margin 3,3,3,3
>>maximumSize 0,0
>>minimumSize 0,0
>>modifiers private
>>padding 0,0,0,0
>>refreshinterval 33
>>size 1368,912
>>sizemode Zoom
>>useWaitCursor false
>>visible true
>>waitonload false
>>
>>
> 関係するか解りませんが、
>  ErrorImage x System.Drowing.Bitmap になっています。
引用返信 編集キー/
■100205 / inTopicNo.9)  Re[7]: pictureBox save方法
□投稿者/ 初心者K (6回)-(2022/07/11(Mon) 10:52:49)
No100204 (初心者K さん) に返信
> ■No100202 (初心者K さん) に返信
>>■No100201 (初心者K さん) に返信
> >>■No100200 (KOZ さん) に返信
>>>>■No100199 (初心者K さん) に返信
> >>>>やってみましたが、元の画像がSAVEされてしまいます。。
>>>>
>>>>えー!そんなわけはないんですが、確認する画像を間違っていません?
>>>>test.jpg を削除してからやってみたらどうなります?
>>>>
>>>>念のため、PictureBox に設定したプロパティを教えてください。
> >>
> >>
> >>ありがとうございます。
> >>消してやってますが、ダメみたいです。
> >>プロパティ送ります。貼り付けられないので書きます
> >>すみません。大文字小文字入り乱れて申し訳ないです。
> >>
> >>Name pictureBox
> >>AccessibleRole default
> >>Anchor none
> >>Backgroundimagelayout Tile
> >>borderStyle None
> >>cursor default
> >>dock none
> >>enable true
> >>generateMember true
> >>image なし
> >>intialimage system.drawing.bitmap
> >>Location 0,0
> >>locked false
> >>Margin 3,3,3,3
> >>maximumSize 0,0
> >>minimumSize 0,0
> >>modifiers private
> >>padding 0,0,0,0
> >>refreshinterval 33
> >>size 1368,912
> >>sizemode Zoom
> >>useWaitCursor false
> >>visible true
> >>waitonload false
> >>
> >>
>>関係するか解りませんが、
>> ErrorImage x System.Drowing.Bitmap になっています。

ありがとうございます。
すみません。
初心者で親のコントロールが何なのか解らない状況です。
mainform にpicturboxを置いているのでmainformになるのでしょうか?

引用返信 編集キー/
■100206 / inTopicNo.10)  Re[6]: pictureBox save方法
□投稿者/ KOZ (278回)-(2022/07/11(Mon) 11:09:10)
No100202 (初心者K さん) に返信

pictureBox.ImageLocation = @"C:\smp.bmp";



pictureBox.Image = Image.FromFile(@"C:\smp.bmp");

に変えてみてもらっていいですか?
上だとたしかに動きが少しおかしくて、下のようにしたら改善しました。

SizeMode = Zoom が原因かなぁ
引用返信 編集キー/
■100207 / inTopicNo.11)  Re[8]: pictureBox save方法
□投稿者/ furu (165回)-(2022/07/11(Mon) 12:12:52)
No100205 (初心者K さん) に返信
> 初心者で親のコントロールが何なのか解らない状況です。
> mainform にpicturboxを置いているのでmainformになるのでしょうか?
mainformだと思います。

KOZさんの方法で保存できます。
但し、別ボタンのクリックイベントなどで行わないと
表示しきれていないで保存されてしまいます。(Refreshで駄目でした)

var parent = pictureBox.Parent;

using (var bmp = new Bitmap(parent.Width, parent.Height))
{
    parent.DrawToBitmap(bmp, new Rectangle(Point.Empty, parent.Size));
    bmp.Save(@"test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}

引用返信 編集キー/
■100208 / inTopicNo.12)  Re[7]: pictureBox save方法
□投稿者/ KOZ (279回)-(2022/07/11(Mon) 12:20:00)
No100206 (KOZ) に返信
> pictureBox.ImageLocation = @"C:\smp.bmp";
> を
> pictureBox.Image = Image.FromFile(@"C:\smp.bmp");
> に変えてみてもらっていいですか?
> 上だとたしかに動きが少しおかしくて、下のようにしたら改善しました。

ImageLocation プロパティにファイル名をセットすると非同期に読み込まれるようです。

WaitOnLoad プロパティを True にするか、Image プロパティに画像データを直接セットすることで改善します。

引用返信 編集キー/
■100210 / inTopicNo.13)  Re[8]: pictureBox save方法
□投稿者/ 初心者K (7回)-(2022/07/11(Mon) 14:44:45)
No100208 (KOZ さん) に返信
> ■No100206 (KOZ) に返信
>>pictureBox.ImageLocation = @"C:\smp.bmp";
>>を
>>pictureBox.Image = Image.FromFile(@"C:\smp.bmp");
>>に変えてみてもらっていいですか?
>>上だとたしかに動きが少しおかしくて、下のようにしたら改善しました。
>
> ImageLocation プロパティにファイル名をセットすると非同期に読み込まれるようです。
>
> WaitOnLoad プロパティを True にするか、Image プロパティに画像データを直接セットすることで改善します。
>

みなさんありがとうございます。
pictureBox.Image = Image.FromFile(@"C:\smp.bmp");に変えて、WaitOnLoadをTrueに変えましたが、どうしても元の画像が出てきてしまいます。

とりあえず、少し勉強しなおします。
今回はここまででOKです。
忙しい中ありがとうございました。m(__)m



解決済み
引用返信 編集キー/
■100211 / inTopicNo.14)  Re[9]: pictureBox save方法
□投稿者/ KOZ (280回)-(2022/07/11(Mon) 15:17:05)
No100210 (初心者K さん) に返信

何かスッキリしない終わりですね・・・

まずは新しいプロジェクトを作り、現象の起きる最低限のコードを作ってみてください。
元のプログラムから新しいプロジェクトにコードをコピーしていく過程で、問題点が見えてくることも多いです。
現象が再現できて、それでもわからなかったら、そのコードを貼り付けて、また相談にきてください。

解決済み
引用返信 編集キー/
■100212 / inTopicNo.15)  Re[10]: pictureBox save方法
□投稿者/ 初心者K (8回)-(2022/07/11(Mon) 15:21:45)
No100211 (KOZ さん) に返信
> ■No100210 (初心者K さん) に返信
>
> 何かスッキリしない終わりですね・・・
>
> まずは新しいプロジェクトを作り、現象の起きる最低限のコードを作ってみてください。
> 元のプログラムから新しいプロジェクトにコードをコピーしていく過程で、問題点が見えてくることも多いです。
> 現象が再現できて、それでもわからなかったら、そのコードを貼り付けて、また相談にきてください。
>

KOZさん、ありがとうございます。
解らなかった場合、また相談します。
ありがとうございました。
引用返信 編集キー/
■100213 / inTopicNo.16)  Re[9]: pictureBox save方法
□投稿者/ banana (1回)-(2022/07/11(Mon) 15:29:33)
No100210 (初心者K さん) に返信

1点確認です。
pictureBox表示画像のSAVEって、どのようなタイミングで行っていますか?
画面上のボタンのイベント等でSAVEならいいのですが、
pictureBoxが表示される前だと、思ったような結果にはならないように思います。
その点は大丈夫でしょうか?
引用返信 編集キー/
■100215 / inTopicNo.17)  Re[10]: pictureBox save方法
□投稿者/ 初心者K (9回)-(2022/07/11(Mon) 16:37:35)
No100213 (banana さん) に返信
> ■No100210 (初心者K さん) に返信
>
> 1点確認です。
> pictureBox表示画像のSAVEって、どのようなタイミングで行っていますか?
> 画面上のボタンのイベント等でSAVEならいいのですが、
> pictureBoxが表示される前だと、思ったような結果にはならないように思います。
> その点は大丈夫でしょうか?


formのmenu画面から押してSAVEするようにしています。
pictureboxに表示された後に押しているので、そこは問題ないと思われます。

引用返信 編集キー/
■100216 / inTopicNo.18)  Re[11]: pictureBox save方法
□投稿者/ banana (3回)-(2022/07/11(Mon) 16:51:19)
No100215 (初心者K さん) に返信

> formのmenu画面から押してSAVEするようにしています。
> pictureboxに表示された後に押しているので、そこは問題ないと思われます。

なるほど。そこは問題なさそうですね。
ところで、SAVE前にpictureboxのサイズ・表示位置を変えているようですが、
この時pictureboxはformより大きいですか?
もし、その場合、formからはみ出た部分は見た目は表示されませんが、
pictureboxのコントロールイメージはformからはみ出た部分も対象になってしまいます。

その場合、furu さんの No100207 の投稿のように、pictureboxの表示部分を切り取ったbitmapを
取得する必要がありますが、そのようにされているでしょうか?

引用返信 編集キー/
■100218 / inTopicNo.19)  Re[12]: pictureBox save方法
□投稿者/ 初心者K (10回)-(2022/07/11(Mon) 18:27:27)
No100216 (banana さん) に返信
> ■No100215 (初心者K さん) に返信
>
>>formのmenu画面から押してSAVEするようにしています。
>>pictureboxに表示された後に押しているので、そこは問題ないと思われます。
>
> なるほど。そこは問題なさそうですね。
> ところで、SAVE前にpictureboxのサイズ・表示位置を変えているようですが、
> この時pictureboxはformより大きいですか?
> もし、その場合、formからはみ出た部分は見た目は表示されませんが、
> pictureboxのコントロールイメージはformからはみ出た部分も対象になってしまいます。
>
> その場合、furu さんの No100207 の投稿のように、pictureboxの表示部分を切り取ったbitmapを
> 取得する必要がありますが、そのようにされているでしょうか?
>
最初にKOZさんが教えてくれました。実施しています。

引用返信 編集キー/
■100220 / inTopicNo.20)  Re[13]: pictureBox save方法
 
□投稿者/ furu (166回)-(2022/07/11(Mon) 19:18:09)
No100218 (初心者K さん) に返信
> >>formのmenu画面から押してSAVEするようにしています。
> >>pictureboxに表示された後に押しているので、そこは問題ないと思われます。
pictureboxに表示されているものでなく
表示されているものをSAVEしたいのですよね。
pictureboxだと思っているけど違うとこだったりします。

>>その場合、furu さんの No100207 の投稿のように、pictureboxの表示部分を切り取ったbitmapを
>>取得する必要がありますが、そのようにされているでしょうか?
> 最初にKOZさんが教えてくれました。実施しています。
picturebox.ParentでSAVEしてみて元と同じでしたか?
引用返信 編集キー/

このトピックをツリーで一括表示

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -