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

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

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

Re[3]: ユーザーコントロールの描画方法について


(過去ログ 144 を表示中)

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

■84416 / inTopicNo.1)  ユーザーコントロールの描画方法について
  
□投稿者/ 夜叉丸 (67回)-(2017/06/30(Fri) 11:30:40)

分類:[C#] 

ユーザーコントロール(uct)を作ってみました。
このユーザーコントロールにピクチャーボックスを貼り付けます。

public partial class uct : UserControl
{
	Brush br_red = new SolidBrush(Color.Red);
	Brush br_brue = new SolidBrush(Color.Blue);
	Brush br_yellow = new SolidBrush(Color.Yellow);

	public uct()
	{
		InitializeComponent();
	}

	private void uct_Paint(object sender, PaintEventArgs e)
	{
		this.CreateGraphics().FillRectangle(br_brue, this.ClientRectangle);
		pbx.CreateGraphics().FillRectangle(br_brue, pbx.ClientRectangle);
	}
}

@このユーザーコントロールをフォームに貼ると
ユーザーコントロールは青になるのですが、ピクチャーボックスは青になりません。
なぜ青くならないのでしょうか?また、青く描画する方法を教えてください。

A次に張り付けた状態でユーザーコントロールの色を青から赤に変更して、
フォームのデザインを表示したけど青色のままでした。
フォームのデザインで変更した内容を反映させる方法を教えてください。

this.CreateGraphics().FillRectangle(br_brue, this.ClientRectangle);
↓
this.CreateGraphics().FillRectangle(br_red, this.ClientRectangle);

よろしくおねがいします。

引用返信 編集キー/
■84417 / inTopicNo.2)  Re[1]: ユーザーコントロールの描画方法について
□投稿者/ shu (1031回)-(2017/06/30(Fri) 12:50:00)
No84416 (夜叉丸 さん) に返信

Paintイベントをつかうときは
CreateGraphicsを使用しないでe.Graphicsを使うようにしたほうがよいです。

pbxの描画はpbxのPaintイベントで行った方がよいです。


引用返信 編集キー/
■84418 / inTopicNo.3)  Re[2]: ユーザーコントロールの描画方法について
□投稿者/ 夜叉丸 (68回)-(2017/06/30(Fri) 13:21:45)
No84417 (shu さん) に返信

ありがとうございます。
変更しました。

private void uct_Paint(object sender, PaintEventArgs e)
{
	e.Graphics.FillRectangle(br_red, this.ClientRectangle);
}

private void pbx_Paint(object sender, PaintEventArgs e)
{
	e.Graphics.FillRectangle(br_brue, pbx.ClientRectangle);
}

結果、フォームに張り付けるときの最初の色表示はできるようになりました。
あと、ユーザーコントロールで色を変更したときに、Formのデザイン表示で
色を反映させる方法はありますか?

引用返信 編集キー/
■84421 / inTopicNo.4)  Re[3]: ユーザーコントロールの描画方法について
□投稿者/ 魔界の仮面弁士 (1329回)-(2017/06/30(Fri) 14:32:55)
2017/06/30(Fri) 15:54:17 編集(投稿者)

No84416 (夜叉丸 さん) に返信
> Brush br_red = new SolidBrush(Color.Red);
Brush は IDisposable な資源なので、後始末も忘れずに。


No84418 (夜叉丸 さん) に返信
> あと、ユーザーコントロールで色を変更したときに、Formのデザイン表示で
> 色を反映させる方法はありますか?

「色を変更」する手順にもよりますが、色を指定するための
プロパティを実装してあるということなのでしょうか。

たとえば「BackColor プロパティが変更したとき」に反映させるのであれば、
OnBackColorChanged メソッドをオーバーライドして、そこで
this.Invalidate(); と pbx.Invalidate(); を呼び出してみては如何でしょう。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=14237&KLOG=30
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -