私は、graphicsPathを使用してpanel1に点と線を描画しています。コードは以下の通りである:Tockekoordinate
とtockeZelena
: コード1073741819(0xc0000005) 'アクセス違反'で終了したプログラム
private void panel1_Paint_1(object sender, PaintEventArgs e)
{
Graphics G = e.Graphics;
GraphicsPath gp = new GraphicsPath();
foreach (var line in tockeKoordinate)
{
gp.AddLine((float) (line.startX), (float) (line.startY), (float) (line.endX), (float) (line.endY));
gp.CloseFigure();
}
var rect = gp.GetBounds();
var scale = Math.Min(1f * (int)(panel1.ClientSize.Width)/rect.Width,
1f * (int)(panel1.ClientSize.Height)/rect.Height);
using (Pen pen = new Pen(Color.Black, 0.0001f))
{
G.SmoothingMode = SmoothingMode.AntiAlias;
G.Clear(Color.White);
G.TranslateTransform(0, +panel1.ClientSize.Height);
G.ScaleTransform(scale, -scale);
G.TranslateTransform(-rect.X, -rect.Y);
G.DrawPath(pen, gp);
}
if(checkBox1.Checked)
{
gp.ClearMarkers();
foreach (var line2 in tockeZelene)
{
gp.AddLine((float)(line2.startX), (float)(line2.startY), (float)(line2.endX), (float)(line2.endY));
gp.CloseFigure();
}
using (pen2);
{
G.DrawPath(pen2, gp); <--- access violation here
}
}
}
は基本的に私は2
Lists
を持っています。最初のものにはすべての点が含まれ、2番目の点には最初の点の約30%が含まれています。これは、最初に初期化されたpen2を使用して緑色に塗りたいものです。
checkbox1がチェックされていると仮定すると、矩形GetBounds
を得るためにすべての点を実行するので、ポイント座標でpanel1を拡大/縮小できます。
checkbox1.checkedの部分が表示され、マークされた行にアプリケーションが終了します。
これを引き起こす可能性があることは誰にも分かりますか?または、少なくとも、エラーの詳細を表示するためにVSを設定する方法を知っていますか?
はい、セミコロンを削除すると助けられましたが、paintメソッドの中に 'pen2'宣言を置くことはそのトリックでした。 – Romy