m.pen = Pens.Red; //No error
m.pen.EndCap = System.Drawing.Drawing2D.LineCap.Square; //error
ここで、mは、ペンをグローバルとして保持する別のクラスのオブジェクトです。
endcapまたはstartcapを設定しようとすると、次のようなエラーが表示されます。
「権限が無効なため、ペンを変更できません。」
誰もがこれを修正する方法を知っています。
Pensによって返される Pen オブジェクトは不変です。つまり、それらのプロパティを変更することはできません。Pen のオブジェクトを作成してみます。
Pen pen =new Pen(Color.Red,20f);
pen.EndCap = System.Drawing.Drawing2D.LineCap.Square;
これを試して:
m.pen = new Pen(Color.Red);
Pens.Red は、フレームワークによって初期化される静的メンバーであり、変更することはできません。
次のように独自の Pen を宣言する必要があります。
m.pen = new Pen(Color.Red);
m.pen.EndCap = System.Drawing.Drawing2D.LineCap.Square;