DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ポイントのコピー

  • 題名: ポイントのコピー
  • 著者: ぱーやん
  • 日時: 2004/02/27 12:05:44
  • ID: 2761
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[visualbasic.net]
分類:[.NET]

以下のプログラムをデバッグすると ハンドルされていないと言う理由でデバッグが中止されます(最初の行のForm1に黄色でマーキングされます。)
そこで
Private Sub PictureBox1_Paint()内の
        StoreP(Count) = APN(j)
StoreP(Count) = BPN(j)
を消すと走るのですが pointのコピーにおいてなんらかの違反がされているのでしょうか?

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "


Dim APN() As Point
Dim BPN() As Point
Dim StoreP() As Point
Dim Count As Long = 0
Dim TempCount As Long = 0

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
If e.Button = MouseButtons.Left Then
TempCount = TempCount + 1
ReDim Preserve APN(TempCount)
APN(TempCount) = New Point(e.X, e.Y)
End If
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
If e.Button = MouseButtons.Left Then
ReDim Preserve BPN(TempCount)
BPN(TempCount) = New Point(e.X, e.Y)
Me.Refresh()
End If
End Sub


Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim p As New Pen(Color.Black, 1)
Dim i As Long
Dim j As Long = 1

For i = 1 To TempCount
e.Graphics.DrawLine(p, APN(i), BPN(i))
Next

Do While Count <= i
Do While j <= i
StoreP(Count) = APN(j)
Count = Count + 1
StoreP(Count) = BPN(j)
Count = Count + 1
j = j + 1
Loop
Loop
End Sub
End Class
StorePだけどこでもReDimされていないようですが? 
(他の二つはされてますね。)

あと、「代入する場所が必要になった段階でRedimする」というつもりであれば、
配列の確保時の添え字が不正ですよ。
VB.NETでは、配列はアクセスでも確保の際でも0からの数を指定するので、
例えば「Dim A(1) As Integer」は要素数2個。なので、APN(0)が放置されてます。
ループを1から始めてるので流れは正常でしょうが、0番がかわいそうなので
一応突っ込みを。
(この指定って、独特の癖ですね。C#でコンポーネント開発しつつVB.NETも
使用するので、どうも慣れるのが大変です。)
(ちなみに、Collectionクラスは1からです。統一して欲しい・・・。)
  • 題名: Re[2]: ポイントのコピー
  • 著者: ぱーやん
  • 日時: 2004/03/01 10:16:36
  • ID: 2792
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No2776に返信(こど。さんの記事)
なろほどRedimですか どうもありがとうございました。
なんだかC癖がついてて。。。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板