回答編集履歴

4

メモリが足りなくなる前に→GCがオブジェクトを回収する前に

2022/09/20 18:44

投稿

KOZ6.0
KOZ6.0

スコア2626

test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### Dispose について
2
2
 
3
- メモリが足りなくなれば、GC(ガベージコレクタ)が回収しますが、ブラシなどの GDI/GDI++ オブジェクトを放置しておくと、メモリ足りなくなる前に GDI/GDI++ のリソース制限に引っかかり、描画がされなくなることも考えられます。
3
+ メモリが足りなくなれば、GC(ガベージコレクタ)が回収しますが、ブラシなどの GDI/GDI++ オブジェクトを放置しておくと、GCオブジェクトを回収する前に GDI/GDI++ のリソース制限に引っかかり、描画がされなくなることも考えられます。
4
4
  サンプルプログラムのような小さいプログラムでは問題にならなくても、大規模なプログラムになってくると問題が発生することもあるので、必ず Dispose を実行するようにしてください。
5
5
  いちばん簡単なのは using ステートメントを使うことですね。
6
6
 

3

ちらつき防止

2022/09/20 17:46

投稿

KOZ6.0
KOZ6.0

スコア2626

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 を作成するときの引数

2022/09/20 17:36

投稿

KOZ6.0
KOZ6.0

スコア2626

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

リンク先間違い

2022/09/20 17:31

投稿

KOZ6.0
KOZ6.0

スコア2626

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/property-changed-events?view=netframeworkdesktop-4.8
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