質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

9039閲覧

インデックス付きのピクセル形式をもつイメージからグラフィックス オブジェクトを作成することはできません。

DENQ

総合スコア19

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/05/13 04:15

編集2016/05/13 04:31

###前提・実現したいこと
現在、特定の画像を読み込みその上に上書きとして、penやテキストを画像の上に張り付けるという処理をしています。
ひとつ前に戻る機能を追加して、ボタンが押された時に配列で覚えておいたbitmapを再描画するという処理を追加したところ、線を引いて戻るボタンを押すとエラーが発生します(初回のみ)
複数回ペンで描画すればひとつ戻る機能はエラーをはかずに実行されます。
言葉足らずで、わかりにくい質問ですが、ご教授よろしくお願いします。

###発生している問題・エラーメッセージ

インデックス付きのピクセル形式をもつイメージからグラフィックス オブジェクトを作成することはできません。

###該当のソースコード

C#

1 2クラス 3 4Paint:pictureBox 5 6/// <summary>読み込みビットマップ</summary> 7 8public Bitmap _bmp; 9 10/// <summary>書き込み用ビットマップ</summary> 11 12public Bitmap _paint; 13 14 15public Paint() { 16 17 // 画面構成部品の生成 18 19 InitializeComponent(); 20 21 // 元画像を設定 22 23 this._bmp = ElectronicMedicalRecord.Properties.Resources.kokuarch; 24 25 // 書き込み用画像を生成 26 27 this._paint = new Bitmap(this._bmp.Width, this._bmp.Height); 28 29 // イメージを設定 30 31 this.Image = _bmp; 32 33 BkImage.Add(this.Image); 34 35 BkPaint.Add(this._paint); 36 37 38 39 } 40 41public void MyPaint() { 42 43 44Bitmap map = new Bitmap(this._bmp.Width, this._bmp.Height); 45 46 // 描画用ビットマップグラフィック生成 47 48 Graphics g = Graphics.FromImage(map); 49 50 // 書き込み用ビットマップグラフィック生成 51 52 Graphics pg = Graphics.FromImage(this._paint); ←ここでエラーが起きます 53 54 55} 56 57 58 59クラス 60 61Form 62 63public void StripReturnBtn_Click(object sender, EventArgs e) { 64 65switch (this.archPaint.Mode) { 66 67 case ArchPaint.PaintMode.Pen: 68 69 case ArchPaint.PaintMode.Eraser: 70 71 int mapCount = archPaint.BkImage.Count - 2; 72 73 Image bkImage = archPaint.BkImage[mapCount]; 74 75 archPaint.Image = bkImage; 76 77 archPaint._paint = (Bitmap)bkImage; 78 79 archPaint.BkImage.Add(archPaint.Image); 80 81 archPaint.BkPaint.Add((Bitmap)archPaint.Image); 82 83 break; 84 85 } 86} 87抜粋しております。 88###試したこと 89StripReturnBtn_ClickのメソッドないでarchPaint._Paintの部分をbkImageではなく配列の一番最初に 90保存されたbitmapを代入したが、二回目以降に戻るボタンを押した際に同じエラーになる。 91 92###補足情報(言語/FW/ツール等のバージョンなど) 93VS2010

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

『インデックス付きのピクセル形式をもつイメージからグラフィックス オブジェクトを作成することはできません』なるエラーが出る時の対処方法。

恐らく「元画像」とやらが「インデックス付きのピクセル形式を持つイメージ」になっていて、
それを元にしてGraphicsを仕様上作れないのでエラーが出ているのかと。

投稿2016/05/13 07:01

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問