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

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

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

Re[6]: 透明なChartのスクリーンショットのとりかた


(過去ログ 173 を表示中)

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

■99533 / inTopicNo.1)  透明なChartのスクリーンショットのとりかた
  
□投稿者/ わぎゃん (1回)-(2022/04/22(Fri) 17:04:57)

分類:[.NET 全般] 

VB.NETに関する質問です。


あるデータのグラフを画像データとして保存したいと考えています。

不透明なフォーム上にchartを配置し
そこにグラフを描画し、スクリーンショットをとれば
実現することができます。

しかし、画像データのみほしい場合、
Chartを描画する必要がなく、不格好なので、
ユーザーからは見えないChart上にグラフを描画し、
そこからスクリーンショットを取得したいと考えています。

このようなことは可能でしょうか?




引用返信 編集キー/
■99534 / inTopicNo.2)  Re[1]: 透明なChartのスクリーンショットのとりかた
□投稿者/ kiku (258回)-(2022/04/22(Fri) 17:25:10)
No99533 (わぎゃん さん) に返信
> VB.NETに関する質問です。
> あるデータのグラフを画像データとして保存したいと考えています。
> 不透明なフォーム上にchartを配置し
> そこにグラフを描画し、スクリーンショットをとれば
> 実現することができます。
>
> しかし、画像データのみほしい場合、
> Chartを描画する必要がなく、不格好なので、
> ユーザーからは見えないChart上にグラフを描画し、
> そこからスクリーンショットを取得したいと考えています。
>
> このようなことは可能でしょうか?

不透明なフォームはキャプチャしたくなく、
chartのみをキャプチャしたいということなのかなー。
やりたいことが良くわかりませんでした。
引用返信 編集キー/
■99535 / inTopicNo.3)  Re[2]: 透明なChartのスクリーンショットのとりかた
□投稿者/ わぎゃん (2回)-(2022/04/22(Fri) 17:33:06)

> 不透明なフォームはキャプチャしたくなく、
> chartのみをキャプチャしたいということなのかなー。

そうです、chartのみのキャプチャをとりたいという意味です。

引用返信 編集キー/
■99536 / inTopicNo.4)  Re[1]: 透明なChartのスクリーンショットのとりかた
□投稿者/ radian (34回)-(2022/04/22(Fri) 17:36:20)
No99533 (わぎゃん さん) に返信

> 不透明なフォーム上にchartを配置し
> そこにグラフを描画し、スクリーンショットをとれば
> 実現することができます。
>
> しかし、画像データのみほしい場合、
> Chartを描画する必要がなく、不格好なので、
> ユーザーからは見えないChart上にグラフを描画し、
> そこからスクリーンショットを取得したいと考えています。
>
> このようなことは可能でしょうか?

[フォームやコントロールの外観をキャプチャする]
https://dobon.net/vb/dotnet/graphics/invokepaint.html

これで行けるんじゃないでしょうか。
引用返信 編集キー/
■99537 / inTopicNo.5)  Re[2]: 透明なChartのスクリーンショットのとりかた
□投稿者/ わぎゃん (3回)-(2022/04/22(Fri) 17:43:41)
No99536 (radian さん) に返信

この方法だとChartがユーザーに見える状態で
キャプチャしなければならないのではないでしょうか?

隠した状態でとることってできませんか?
引用返信 編集キー/
■99538 / inTopicNo.6)  Re[3]: 透明なChartのスクリーンショットのとりかた
□投稿者/ Hongliang (1229回)-(2022/04/22(Fri) 17:49:48)
お使いのChartがSystem.Windows.Forms.DataVisualizations.Charts.Chartであれば、
SaveImageメソッドが存在していますが。
引用返信 編集キー/
■99539 / inTopicNo.7)  Re[1]: 透明なChartのスクリーンショットのとりかた
□投稿者/ WebSurfer (2463回)-(2022/04/22(Fri) 18:11:37)
No99533 (わぎゃん さん) に返信

Chart には Windows Forms 用と ASP.NET Web Forms 用の 2 種類があるので、
ます質問の一行目にどっちか書こう。


引用返信 編集キー/
■99540 / inTopicNo.8)  Re[2]: 透明なChartのスクリーンショットのとりかた
□投稿者/ わぎゃん (4回)-(2022/04/22(Fri) 18:13:48)
ありがとうございます。
Windows Forms 用です。

SaveImageメソッドに関してなのですが、
例えば、1000x1000ピクセルのチャートの画像がほしいとして、
それと同じサイズのChartをフォーム上に配置する必要がありますか?
フォーム上にchartを配置せずに画像を取得したいのですが。
やはり、透明なフォーム上に貼り付けて使用すれば良いのでしょうか?
引用返信 編集キー/
■99541 / inTopicNo.9)  Re[3]: 透明なChartのスクリーンショットのとりかた
□投稿者/ WebSurfer (2464回)-(2022/04/22(Fri) 18:26:53)
No99540 (わぎゃん さん) に返信

> SaveImageメソッドに関してなのですが、
> 例えば、1000x1000ピクセルのチャートの画像がほしいとして、
> それと同じサイズのChartをフォーム上に配置する必要がありますか?

いえ、違います。Form に配置したら表示されてしまいますので、Chart のインスタンスは生成して
も Form には配置しません。

> フォーム上にchartを配置せずに画像を取得したいのですが。
> やはり、透明なフォーム上に貼り付けて使用すれば良いのでしょうか?

透明なフォームなど必要ありません。

chart を生成したら Chart.SaveImage で保存できます。以前作ったサンプルコードを書いておきます。


        private void SaveButton_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "BMP形式|*.bmp|JPEG形式|*.jpeg|PNG形式|*.png";
            saveFileDialog1.FilterIndex = 2;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string filename = saveFileDialog1.FileName;
                string ext = Path.GetExtension(filename).ToLower();
                ChartImageFormat format;
                if (ext == ".jpeg")
                {
                    format = ChartImageFormat.Jpeg;
                }
                else if (ext == ".png")
                {
                    format = ChartImageFormat.Png;
                }
                else if (ext == ".bmp")
                {
                    format = ChartImageFormat.Bmp;
                }
                else
                {
                    throw new InvalidOperationException();
                }
                this.chart.SaveImage(filename, format);
            }
        }

引用返信 編集キー/
■99542 / inTopicNo.10)  Re[3]: 透明なChartのスクリーンショットのとりかた
□投稿者/ radian (35回)-(2022/04/22(Fri) 19:31:21)
No99537 (わぎゃん さん) に返信
> ■No99536 (radian さん) に返信
>
> この方法だとChartがユーザーに見える状態で
> キャプチャしなければならないのではないでしょうか?
>
> 隠した状態でとることってできませんか?

撮れますよ
引用返信 編集キー/
■99543 / inTopicNo.11)  Re[4]: 透明なChartのスクリーンショットのとりかた
□投稿者/ わぎゃん (5回)-(2022/04/22(Fri) 20:44:42)
No99541 (WebSurfer さん) に返信


ありがとうございます。

確かにフォーム上にないchartでも画像保存できることを確認できました。


あと、フォーム上にあるChartと全く同じ設定で
画像サイズだけ大きくして保存したいのですが、


            Me.chart000 = Chart1

            With Me.chart000

                .Width = 1000
                .Height = 1000

            End With

            Me.chart000.SaveImage(filename, format)

とすると、フォーム上にあるChartのサイズまで変わってしまいます。

恐らく、

            Me.chart000 = Chart1.clone
とする必要があると思うのですが
chartにはcloneメソッドが対応していないようです。


どのようにすれば良いでしょうか?


引用返信 編集キー/
■99544 / inTopicNo.12)  Re[5]: 透明なChartのスクリーンショットのとりかた
□投稿者/ Hongliang (1230回)-(2022/04/22(Fri) 21:18:56)
必要なパラメータを全部写していくとか(まあ面倒ですね)

SaveImage後すぐ元のサイズに戻すというのはどうでしょう。
引用返信 編集キー/
■99545 / inTopicNo.13)  Re[5]: 透明なChartのスクリーンショットのとりかた
□投稿者/ WebSurfer (2465回)-(2022/04/22(Fri) 21:27:16)
No99543 (わぎゃん さん) に返信

> あと、フォーム上にあるChartと全く同じ設定で
> 画像サイズだけ大きくして保存したいのですが、

表示するものと保存するものを別に 2 つ作ったらいいんじゃないですか?


#一つの問題の解決が次の疑問をよんで次から次へと質問をするのは避けてください。一つの表題、一つの
 質問、それに対する回答に限った方が、後から検索などでここにたどりついた人には分かりやすいと思い
 ますので。

引用返信 編集キー/
■99546 / inTopicNo.14)  Re[6]: 透明なChartのスクリーンショットのとりかた
□投稿者/ わぎゃん (6回)-(2022/04/23(Sat) 09:19:22)
ありがとうございます。

スクリーンショットに関しては
解決しましたので
一旦閉じさせていただきます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -