C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

PictureBoxに文字列を表示したい


(過去ログ 5 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■4963 / inTopicNo.1)  PictureBoxに文字列を表示したい
  
□投稿者/ さすけ 二等兵(3回)-(2006/07/13(Thu) 17:40:26)

分類:[C#] 


分類:[C#] 

さすけです。

お世話になります。

PictureBoxに文字列を表示するために、下記のコーディングを行いました。

※Visual C# 2005 Express Edition
※PictureBox(pictureBox1)はFormに貼り付けたのみ。
※PictureBoxにはイメージを設定しておりません。
※PictureBoxのプロパティはサイズを変更した程度です。

---------------------------------------------------------------------------
using (Font font = new Font("MS Pゴシック", 15))
using (Graphics graphics = pictureBox1.CreateGraphics())
{
graphics.DrawString("描画テスト",
font,
new SolidBrush(Color.Black),
new Point(10, 10),
new StringFormat()
);
}
---------------------------------------------------------------------------

が、文字列が表示されません・・・orz
コーディング(引数など)で問題、抜け等がありますでしょうか?

よろしくお願いいたします。


0
引用返信 編集キー/
■4964 / inTopicNo.2)  Re[1]: PictureBoxに文字列を表示したい
□投稿者/ Blue 伍長(51回)-(2006/07/13(Thu) 17:49:05)

分類:[C#] 

描画後

pictureBox1.Invalidate();

ではダメかな?

0
引用返信 編集キー/
■4965 / inTopicNo.3)  Re[1]: PictureBoxに文字列を表示したい
□投稿者/ ぽぴ王子 一等兵(30回)-(2006/07/13(Thu) 17:56:41)
ぽぴ王子 さんの Web サイト

分類:[C#] 

こんにちは。

> コーディング(引数など)で問題、抜け等がありますでしょうか?

うーん、問題や抜けというよりは、ちょっとした誤解があるような気がします。
とりあえず PictureBox.CreateGraphics ではなく、Graphics.FromImage を使うみたいですね。

http://homepage3.nifty.com/midori_no_bike/CS/index.html?graphics.143
こちらを参考にしてみてください。

# なんでもかんでも using すりゃいいってもんじゃない…気がする

0
引用返信 編集キー/
■4967 / inTopicNo.4)  Re[2]: PictureBoxに文字列を表示したい
□投稿者/ さすけ 二等兵(4回)-(2006/07/13(Thu) 18:42:05)

分類:[C#] 

さすけです。

Blueさん、ぽぴ王子さん
早速のご返信ありがとうございます。

Blueさんに教えていただいた

> pictureBox1.Invalidate();

を入れてみたのですが表示されませんでした。
DrawStringの場合はInvalidateが効かないのでしょうか・・・。

ぽぴ王子さんに教えていただいた

> うーん、問題や抜けというよりは、ちょっとした誤解があるような気がします。
> とりあえず PictureBox.CreateGraphics ではなく、Graphics.FromImage を使うみたいですね。

で「Graphics.FromImage」を使用することにより表示することができました。

根本的にGraphicsの取得方法が間違っていました・・・orz

Blueさん、ぽぴ王子さん、ご教授ありがとうございました。


解決済み
引用返信 編集キー/
■4969 / inTopicNo.5)  Re[2]: PictureBoxに文字列を表示したい
□投稿者/ 通りすがり 二等兵(2回)-(2006/07/13(Thu) 20:23:05)

分類:[C#] 

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Font myFont = new Font("MSゴシック", 20, FontStyle.Italic);
SolidBrush myBrush = new SolidBrush(Color.Black);
e.Graphics.DrawString("はじめてのC#", myFont, myBrush, 10, 10);

}

では?

0
引用返信 編集キー/
■4970 / inTopicNo.6)  Re[3]: PictureBoxに文字列を表示したい
□投稿者/ 名無しぃシャープ 少尉(127回)-(2006/07/13(Thu) 21:17:24)

分類:[C#] 

No4969に返信(通りすがりさんの記事)
> Font myFont = new Font("MSゴシック", 20, FontStyle.Italic);

Font myFont = new Font("MS ゴシック", 20, FontStyle.Italic);

では?

0
引用返信 編集キー/
■4978 / inTopicNo.7)  Re[3]: PictureBoxに文字列を表示したい
□投稿者/ さすけ 二等兵(5回)-(2006/07/14(Fri) 10:17:47)

分類:[C#] 

通りすがりさん、返信ありがとうございます。

> private void pictureBox1_Paint(object sender, PaintEventArgs e)
> {
> Font myFont = new Font("MSゴシック", 20, FontStyle.Italic);
> SolidBrush myBrush = new SolidBrush(Color.Black);
> e.Graphics.DrawString("はじめてのC#", myFont, myBrush, 10, 10);
>
> }

詳しい処理内容を書いていなかった自分がいけないのですが、

「定期的にPictureBoxへ違う文字列を書き込みたい」
(タイマーなどで定期的に書き換える)

という仕様があります。
そこで、文字列を渡すメソッドを用意してPictureBoxにその文字列を
書き込もうと考えていました。

自分がPaintイベントの発生タイミングをよく分かっていないだけだと
思うのですがPaintイベントで上記の仕様は実現可能でしょうか?


0
引用返信 編集キー/
■4981 / inTopicNo.8)  Re[4]: PictureBoxに文字列を表示したい
□投稿者/ Hongliang 軍曹(64回)-(2006/07/14(Fri) 12:17:45)
Hongliang さんの Web サイト

分類:[C#] 

そのタイマで定期的に Invalidate を呼び出して再描画を指示するのが一般的でしょうね。
再描画が指示されると .NET は Paint イベントを発生させそこ(Paint イベントに登録されたイベントハンドラ)に書かれている描画命令を実行します。
タイマの Tick イベントは描画する内容の更新と Invalidate、Paint イベントが描画という役割分担です。

0
引用返信 編集キー/
■4983 / inTopicNo.9)  Re[5]: PictureBoxに文字列を表示したい
□投稿者/ さすけ 二等兵(6回)-(2006/07/14(Fri) 14:08:39)

分類:[C#] 

さすけです。

Hongliangさん、返信ありがとうございます。

> そのタイマで定期的に Invalidate を呼び出して再描画を指示するのが一般的でしょうね。
> 再描画が指示されると .NET は Paint イベントを発生させそこ(Paint イベントに登録されたイベントハンドラ)に書かれている描画命令を実行します。
> タイマの Tick イベントは描画する内容の更新と Invalidate、Paint イベントが描画という役割分担です。

Paintイベントでの再描画のイメージがやっとつかめました^^;
Invalidateで再描画させればPaintイベントが発生するということですね。
(InvalidateはタイマーのTickイベントで定期的に呼ぶと)

試してみます。
ありがとうございました。

レスを付けてくださった皆様、ありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -