###前提・実現したいこと
現在、特定の画像を読み込みその上に上書きとして、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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。