トップ回答者
PictureBoxの前面に円を描くには?

質問
-
いつもお世話になります。
Windows7/8でVisual Studio Express 2013 for Windows Desktopで開発しています。
PictureBoxを配置してあるFormで、PictureBoxの上にマウスクリックで円を描きたいと考えています。
そこで、
private void pictureBox1_Click(object sender, EventArgs e) {
PictureBox picturebox = sender as PictureBox;
drawcircle(new Point(200, 200));
}private void drawcircle(Point point) {
Graphics g = CreateGraphics();
SolidBrush Brush = new SolidBrush(Color.Red);
Rectangle rectangle = new Rectangle(point.X, point.Y, 10, 10);
g.FillEllipse(Brush, rectangle);
Brush.Dispose();
g.Dispose();
}
として動作を確認しています。
これで円の描画はできているのですが、PictureBoxのうしろに隠れてしまっていて、見ることができません。
円を描画しているかどうかは、pictureboxと描画位置をずらすことで確認できました。
drawcircle(new Point(20, 20));
などのようにです。
重ね合わせの問題かと思って、drawcircleしたあとに
picterubox1.SendToBack();
してみたのですが、これでも描画した円を見ることができません。
PictureBoxの前面に円を描くには、どのようにしたらよいですか?
- 編集済み skyrabbit 2014年4月12日 11:35 typo
回答
-
試していませんが、おそらくCreateGraphicsメソッドの実行に問題があります。
示されたコードではFormのCreateGraphicsメソッドを実行しています。以下のようにPictureBoxのメソッドとして実行してみて下さい。
Graphics g = pictureBox1.CreateGraphics();
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 回答としてマーク skyrabbit 2014年4月12日 13:02
すべての返信
-
試していませんが、おそらくCreateGraphicsメソッドの実行に問題があります。
示されたコードではFormのCreateGraphicsメソッドを実行しています。以下のようにPictureBoxのメソッドとして実行してみて下さい。
Graphics g = pictureBox1.CreateGraphics();
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 回答としてマーク skyrabbit 2014年4月12日 13:02