前提・実現したいこと
InkPictureでストロークを書くごとにその画像を自動保存したい
Visual Studio2019のWindowsフォームアプリケーションのInKPictureコントロールにてストロークを書くたびに画像を自動保存するようにしたいのですが以下のエラーメッセージが発生しました。
どなたかご教授いただけないでしょうか。
発生している問題・エラーメッセージ
エラーメッセージ
system.runtime.interopservices.externalexception: 'gdi+ で汎用エラーが発生しました。'
該当のソースコード
言語名 C#
ソースコード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e) { inkPicture1.Ink.DeleteStrokes(); inkPicture1.Invalidate(); } private void inkPicture1_Stroke(object sender, Microsoft.Ink.InkCollectorStrokeEventArgs e) { Bitmap bm = new Bitmap(inkPicture1.Width, inkPicture1.Height); using (bm) { //背景を塗りつぶし Graphics g = Graphics.FromImage(bm); g.FillRectangle(Brushes.White, new Rectangle(0, 0, bm.Width, bm.Height)); //InkPictureの線を描画 inkPicture1.Renderer.Draw(bm, inkPicture1.Ink.Strokes); //画像の保存 bm.Save("C:\test.png", System.Drawing.Imaging.ImageFormat.Png); }
試したこと
以下のようにプログラムを書き換えましたがエラーとなりました
private void inkPicture1_Stroke(object sender, Microsoft.Ink.InkCollectorStrokeEventArgs e)
{
Bitmap bm;
using (bm = new Bitmap(inkPicture1.Width, inkPicture1.Height)) { //背景を塗りつぶし Graphics g = Graphics.FromImage(bm); g.FillRectangle(Brushes.White, new Rectangle(0, 0, bm.Width, bm.Height)); //InkPictureの線を描画 inkPicture1.Renderer.Draw(bm, inkPicture1.Ink.Strokes); } using (bm) { //画像の保存 bm.Save("C:\test.png", System.Drawing.Imaging.ImageFormat.Png); }
エラーメッセージ
System.Argument.Exception:使用されたパラメータが有効ではありません
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/06 05:25