回答編集履歴
4
メモリが足りなくなる前に→GCがオブジェクトを回収する前に
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### Dispose について
|
2
2
|
|
3
|
-
メモリが足りなくなれば、GC(ガベージコレクタ)が回収しますが、ブラシなどの GDI/GDI++ オブジェクトを放置しておくと、
|
3
|
+
メモリが足りなくなれば、GC(ガベージコレクタ)が回収しますが、ブラシなどの GDI/GDI++ オブジェクトを放置しておくと、GCがオブジェクトを回収する前に GDI/GDI++ のリソース制限に引っかかり、描画がされなくなることも考えられます。
|
4
4
|
サンプルプログラムのような小さいプログラムでは問題にならなくても、大規模なプログラムになってくると問題が発生することもあるので、必ず Dispose を実行するようにしてください。
|
5
5
|
いちばん簡単なのは using ステートメントを使うことですね。
|
6
6
|
|
3
ちらつき防止
test
CHANGED
@@ -22,6 +22,9 @@
|
|
22
22
|
{
|
23
23
|
public UserControl1() {
|
24
24
|
InitializeComponent();
|
25
|
+
// ちらつき防止
|
26
|
+
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
27
|
+
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
25
28
|
}
|
26
29
|
|
27
30
|
protected override void OnPaint(PaintEventArgs e) {
|
@@ -87,11 +90,9 @@
|
|
87
90
|
|
88
91
|
上のコードはあくまでもサンプルであり、最低限の実装をしているだけです。
|
89
92
|
|
90
|
-
プロパティの実装には、いろいろお作法があるのですが、ちょっと説明しき
|
93
|
+
プロパティの実装には、いろいろお作法があるのですが、ちょっと説明しきれませんので
|
91
94
|
|
92
95
|
「.NET Framework を使用したカスタム Windows フォーム コントロールの開発」
|
93
96
|
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/developing-custom-windows-forms-controls?view=netframeworkdesktop-4.8
|
94
97
|
|
95
98
|
を参照してください。
|
96
|
-
|
97
|
-
|
2
LinearGradientBrush の引数 → LinearGradientBrush を作成するときの引数
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
UserControl は、自身にプロパティやメソッドを実装して外部から動作を変更できます。
|
10
10
|
背景をグラデーションしたいのであれば、グラデーションに関する情報をプロパティとして実装すると良いでしょう。
|
11
|
-
この場合、LinearGradientBrush の引数のうち、開始色、終了色、グラデーションの方向を指定する LinearGradientMode 列挙体 です
|
11
|
+
この場合、LinearGradientBrush を作成するときの引数のうち、開始色、終了色、グラデーションの方向を指定する LinearGradientMode 列挙体 です。
|
12
12
|
ここで重要なのは、プロパティの値が変更されたら、背景を再描画する必要がある、ということです。
|
13
13
|
ウインドウハンドルが作成されていれば、Invalidate メソッドを実行して、再描画します。
|
14
14
|
|
1
リンク先間違い
test
CHANGED
@@ -90,7 +90,7 @@
|
|
90
90
|
プロパティの実装には、いろいろお作法があるのですが、ちょっと説明しきりませんので
|
91
91
|
|
92
92
|
「.NET Framework を使用したカスタム Windows フォーム コントロールの開発」
|
93
|
-
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/
|
93
|
+
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/developing-custom-windows-forms-controls?view=netframeworkdesktop-4.8
|
94
94
|
|
95
95
|
を参照してください。
|
96
96
|
|