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

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

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

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

Q&A

解決済

2回答

9060閲覧

paintイベントについて

joihhooijohog

総合スコア15

C#

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

0グッド

0クリップ

投稿2019/04/09 13:43

PictureBoxをPaintイベントを利用して描画したいのですが、難しいです。
Refresh();メゾットを呼び出しているのにも関わらず、Paintイベントが実行しません。
どこら辺が間違っているかご指摘お願いします。

public

1 2 private Image[] img=new Image[3]; 3 4 private Bitmap fore, back; 5 6 private int x, y; 7 8 public ObjectDraw() 9 10 { 11 12 img[0] = Image.FromFile(@"あ.png"); 13 14 Refresh(); 15 16 } 17 18 public override void PictureBox1_Paint(PaintEventArgs e) 19 20 { 21 22 base.PictureBox1_Paint(e); 23 e.Graphics.DrawImage(back, x, y); 24 e.Graphics.DrawImage( 25 fore, back.Width / 2 - fore.Width / 2, 26 back.Height / 2 - fore.Height / 2 27 ); 28 29 30 }

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

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

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

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

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

guest

回答2

0

ベストアンサー

PictureBoxをデザイナーで配置したのであれば、プロパティウインドウから設定できます。
下図のようにPaintを選択し、エンターを押すと
イメージ説明

このように自動でイベントハンドラが生成されるはずです。

C#

1private void pictureBox1_Paint(object sender, PaintEventArgs e) 2{ 3 4} 5

PictureBoxを継承したコントロールを作成されている場合でしたら

C#

1public class PictureBox2 : PictureBox 2{ 3 protected override void OnPaint(PaintEventArgs pe) 4 { 5 base.OnPaint(pe); 6 } 7}

というふうにOnPaintをオーバーライドします。

投稿2019/04/09 14:07

YAmaGNZ

総合スコア10222

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

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

joihhooijohog

2019/04/16 13:59

設定を確認し、form1のコントロールをPublicにし、直接アクセスしてfor文でPictureBox.Refreshしているのですが、見る限りpaintイベントが発生しないのですが、それは仕様ですか? public ObjectDraw() { DrawSeach(0); } private void DrawSeach(int i) { if (i < Designation.MapChar.GetLength(0)) { Drawing(i); } } private void Drawing(int n) { for (int i = 0; i < Designation.MapChar.GetLength(1); i++) { if (Designation.MapChar[n, i] == '工') { x = n * 42; y = i * 42; fore = (Bitmap)Designation.img[2]; pictureBoxUnder.Refresh(); new Factry(n, i); } } n++; DrawSeach(n); } }
YAmaGNZ

2019/04/17 02:56

仕様ということは考えにくいかと思います。 実装が間違った実装をしているか、思い違いをしているかだと思います。 何が悪いかに関しては、現状提示されているコードでは判断できません。 イベントハンドラをどのように書いたかなど追記してください。 また、コメント欄ではソースの整形はされませんので、大きなコードの場合は質問を編集するなりしてください。
guest

0

全体のコードがわからないのでイマイチ不明ですが、
Paintイベントの設定が間違ってるような気がします

override するもんじゃないですぜ

投稿2019/04/09 13:57

y_waiwai

総合スコア87719

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問