- ベストアンサー
C#でピクチャーボックスへの文字列描画について
- C#でピクチャーボックスへの文字列描画方法を知りたいです。自分が使っているピクチャーボックスは動的生成しており、初めの宣言時に問題があります。
- 質問者はC#でピクチャーボックスへの文字列描画方法について困っています。自分が使っているピクチャーボックスは動的生成しており、初めの宣言時にどこか間違っている可能性があると思っています。
- C#でピクチャーボックスへの文字列描画方法に関して質問があります。質問者が使っているピクチャーボックスは動的生成されており、初めの宣言時に何か問題があるようです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
手元の環境では、次のコードでちゃんと表示が行われます。 (Form1の上にbutton1があり、2個のピクチャーボックスを左右に動的生成。button1を押す度に左右交互に文字を表示・消去) namespace hogehoge { public partial class Form1 : Form { PictureBox[] picbox; int phase = 0; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { for (int i = 0; i < 2; i++) { //PictureBox1のGraphicsオブジェクトを取得 Graphics g = picbox[i].CreateGraphics(); //文字列を表示する範囲を指定する RectangleF rect = new RectangleF(10, 10, 85, 140); //rectの四角を描く g.FillRectangle(Brushes.White, rect); if (i == phase) { string drawString = @"ぴよぴよ"; //Fontを作成 Font fnt = new Font("MS ゴシック", 12); //文字を書く g.DrawString(drawString, fnt, Brushes.Black, rect); //リソースを開放する fnt.Dispose(); } //リソースを開放する g.Dispose(); } phase ^= 1; } private void Form1_Load(object sender, EventArgs e) { picbox = new PictureBox[2]; for (int i = 0; i < 2; i++) { picbox[i] = new System.Windows.Forms.PictureBox(); if (i == 0) { picbox[i].Location = new Point(30, 25); } else { picbox[i].Location = new Point(150, 25); } picbox[i].Size = new System.Drawing.Size(105, 168); picbox[i].BorderStyle = BorderStyle.Fixed3D; this.Controls.Add(picbox[i]); } } } }
その他の回答 (1)
- magicalpass
- ベストアンサー率58% (378/648)
動的に生成されたピクチャーボックスは、コントロールが有効になっていますか? ピクチャーボックスは単にインスタンスを生成しただけではコントロールが関連付けられていないので、ピクチャーボックス自体が有効になっていないはずです。 ロケーションやサイズをきちんと設定した上でFormにコントロールを割り付けないと、描画等の処理は行えないと思います。 picbox[i].Location = New Point(10, 10); picbox[i].Size = New System.Drawing.Size(128, 128); this.Controls.Add(picbox[i]);
補足
反応送れてすみません はい、その辺のこともちゃんとやった上で 表示というか、ピクチャーボックスは表示できてるですが ピクチャーボックスの中に描画されるはずの文字が描画されていない。 という状況です…。 説明不足ですみません…。
お礼
ありがとうございます! 回答を見ながらClickイベントを使ってやってみるとできました! 定期的に再描画する場合はTimerを使えばなんとかなるかな…? そこら辺は自分でよく考えて無理だったら質問させて頂きます(頼ってばっかりですがね… 本当にありがとうございました