C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■103834 / 26階層)  Visual Basicで簡易CADを作成
□投稿者/ shiro (15回)-(2025/08/07(Thu) 07:06:59)
No103832 (魔界の仮面弁士 さん) に返信
> ■No103830 (shiro さん) に返信

魔界の仮面弁士 様

下記のとおり修正してコンパイルすると次のワーニングが出ましたが実行ファイルは出来ました。
新しくクラスに追加したFunction部分です。

右クリックして柱や壁を選択しても黄色表示がされず、削除もできませんでした。


1>Form1.vb(1510,5): warning BC42353: 関数 'Contains' には値を返さないコード パスがあります。'Return' ステートメントが不足していないかどうかを確認してください。
1>Form1.vb(1480,5): warning BC42353: 関数 'Contains' には値を返さないコード パスがあります。'Return' ステートメントが不足していないかどうかを確認してください。


           記

    'Private selectedPillars As New List(Of Pillar)
    'Private selectedWalls As New List(Of Wall)


   Private Sub PictureBox1_MouseDown(
          ByVal sender As System.Object,
          ByVal e As System.Windows.Forms.MouseEventArgs) _
          Handles PictureBox1.MouseDown

       If e.Button.HasFlag(MouseButtons.Right) Then

            For Each pillar In pillarList
                pillar.IsSelected = pillar.Contains(e.Location)
            Next

            For Each wall In wallList
                wall.IsSelected = wall.Contains(e.Location)
            Next

        End If

       '削除する柱や壁をクリックすることで選択できるようにする

        For Each pillar In pillarList
            If pillar.IsSelected Then
                If Math.Abs(e.X - pillar.X) < 10 AndAlso Math.Abs(e.Y - pillar.Y) < 10 Then
                    'If Not selectedPillars.Contains(pillar) Then
                    'selectedPillars.Add(pillar)
                    'End If
                End If
            End If
        Next

       For Each wall In wallList
            If wall.IsSelected Then

                If Math.Abs(e.X - Me.startPoint.X) < 10 AndAlso Math.Abs(e.Y - Me.endPoint.Y) < 10 Then
                    'If Math.Abs(e.X - wall.startPoint.X) < 10 AndAlso Math.Abs(e.Y - wall.endPoint.Y) < 10 Then

                    'If Not selectedWalls.Contains(wall) Then
                    'selectedWalls.Add(wall)
                    'End If
                End If
            End If
        Next


    Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
  
       For Each pillar In pillarList
            If pillar.IsSelected Then
                'If selectedPillars.Contains(pillar) Then
                'e.Graphics.FillEllipse(Brushes.Yellow, pillar.X - 5, pillar.Y - 5, 10, 10)
                e.Graphics.FillEllipse(Brushes.Yellow, pillar.X - rectangleSize \ 2, pillar.Y - rectangleSize \ 2, rectangleSize, rectangleSize)
            Else
                'e.Graphics.FillEllipse(Brushes.Red, pillar.X - 5, pillar.Y - 5, 10, 10)
                e.Graphics.FillRectangle(Brushes.Red, pillar.X - rectangleSize \ 2, pillar.Y - rectangleSize \ 2, rectangleSize, rectangleSize)
                'End If
            End If
        Next

       For Each wall In wallList
            Dim p = If(wall.IsSelected, pen9, pen7) '選択状態に合わせて Pen を切り替える
            e.Graphics.DrawLine(p, wall.startPoint, wall.endPoint)
        Next


   Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click

        Dim selectedPillar As Pillar = pillarList.FirstOrDefault(Function(p) p.IsSelected)
        If selectedPillar IsNot Nothing Then
            '選択済みの矩形があれば削除
            pillarList.Remove(selectedPillar)
            PictureBox1.Invalidate() 'PictureBoxを強制的に再描画する
        End If

        Dim selectedWall As Wall = wallList.FirstOrDefault(Function(p) p.IsSelected)
        If selectedWall IsNot Nothing Then
            '選択済みの矩形があれば削除
            wallList.Remove(selectedWall)
            PictureBox1.Invalidate() 'PictureBoxを強制的に再描画する
        End If

    End Sub

Public Class Pillar
    Private Shared LastIndex As Integer = 0
    Public ReadOnly Property Index As Integer
    Public Property X As Integer
    Public Property Y As Integer

    Public Property IsSelected As Boolean

    Public Function Contains(p As Point) As Boolean

    End Function

    Public Sub New(location As Point)
        LastIndex += 1
        Me.Index = LastIndex
        Me.X = location.X
        Me.Y = location.Y

        'Me.IsSelected = False

    End Sub
End Class


'=== 案1 ===
Public Class Wall
    Private Shared LastIndex As Integer = 0
    Private Const DefaultStiffnessValue As Double = 2.5

    Public ReadOnly Property Index As Integer
    Public Property startPoint As Point
    Public Property endPoint As Point
    Public Property Stiffness As Double

    Public Property IsSelected As Boolean

    Public Function Contains(p As Point) As Boolean

    End Function

    Public Sub New(startPoint As Point, endPoint As Point)
        Me.New(startPoint, endPoint, DefaultStiffnessValue)
    End Sub

    Public Sub New(startPoint As Point, endPoint As Point, stiffness As Double)
        LastIndex += 1
        Me.Index = LastIndex
        Me.StartPoint = startPoint
        Me.EndPoint = endPoint
        Me.Stiffness = stiffness

        'Me.IsSelected = IsSelected

    End Sub
End Class

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[25]: Visual Basicで簡易CADを作成 /魔界の仮面弁士 →Re[27]: Visual Basicで簡易CADを作成 /魔界の仮面弁士
 
上記関連ツリー

Visual Basicで簡易CADを作成 / shiro (25/07/25(Fri) 20:50) #103783
Re[1]: Visual Basicで簡易CADを作成 / KOZ (25/07/27(Sun) 14:35) #103784
  └ Re[2]: Visual Basicで簡易CADを作成 / shiro (25/07/28(Mon) 20:17) #103785
    ├ Re[3]: Visual Basicで簡易CADを作成 / kiku (25/07/29(Tue) 08:49) #103786
    └ Re[3]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/29(Tue) 14:06) #103791
      └ Re[4]: Visual Basicで簡易CADを作成 / shiro (25/07/30(Wed) 12:22) #103792
        └ Re[5]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/30(Wed) 15:46) #103794
          └ Re[6]: Visual Basicで簡易CADを作成 / shiro (25/07/31(Thu) 07:34) #103795
            └ Re[7]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/07/31(Thu) 10:48) #103796
              └ Re[8]: Visual Basicで簡易CADを作成 / shiro (25/08/01(Fri) 06:15) #103797
                ├ Re[9]: Visual Basicで簡易CADを作成 / kiku (25/08/01(Fri) 08:47) #103798
                │└ Re[10]: Visual Basicで簡易CADを作成 / shiro (25/08/02(Sat) 03:40) #103803
                └ Re[9]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/01(Fri) 10:46) #103800
                  ├ Re[10]: Visual Basicで簡易CADを作成 / kiku (25/08/01(Fri) 10:50) #103801
                  └ Re[10]: Visual Basicで簡易CADを作成 / shiro (25/08/02(Sat) 03:38) #103802
                    └ Re[11]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/03(Sun) 11:50) #103805
                      └ Re[12]: Visual Basicで簡易CADを作成 / shiro (25/08/04(Mon) 05:10) #103806
                        └ Re[13]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/04(Mon) 11:36) #103808
                          └ Re[14]: Visual Basicで簡易CADを作成 / shiro (25/08/04(Mon) 18:59) #103811
                            └ Re[15]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/04(Mon) 19:43) #103812
                              └ Re[16]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 12:42) #103814
                                └ Re[17]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 12:44) #103815
                                  └ Re[18]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/05(Tue) 18:02) #103817
                                    └ Re[19]: Visual Basicで簡易CADを作成 / shiro (25/08/05(Tue) 19:28) #103819
                                      └ Re[20]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/05(Tue) 20:39) #103821
                                        └ Re[21]: Visual Basicで簡易CADを作成 / shiro (25/08/06(Wed) 12:22) #103822
                                          └ Re[22]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 14:42) #103825
                                            ├ Re[23]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 17:53) #103828
                                            │└ Re[24]: Visual Basicで簡易CADを作成 / shiro (25/08/06(Wed) 19:13) #103830
                                            │  ├ Re[25]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 19:44) #103832
                                            │  │└ Visual Basicで簡易CADを作成 / shiro (25/08/07(Thu) 07:06) #103834 ←Now
                                            │  │  └ Re[27]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/07(Thu) 12:18) #103835
                                            │  │    └ Re[28]: Visual Basicで簡易CADを作成 / shiro (25/08/07(Thu) 19:14) #103836
                                            │  │      └ Re[29]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/07(Thu) 20:25) #103837
                                            │  │        ├ Re[30]: Visual Basicで簡易CADを作成 / shiro (25/08/08(Fri) 03:34) #103838
                                            │  │        └ Re[30]: Visual Basicで簡易CADを作成 / shiro (25/08/08(Fri) 07:29) #103839
                                            │  │          └ Re[31]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/08(Fri) 09:40) #103841
                                            │  │            └ Re[32]: Visual Basicで簡易CADを作成 / shiro (25/08/09(Sat) 05:05) #103842
                                            │  │              └ Re[33]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/09(Sat) 14:24) #103843
                                            │  │                └ Re[34]: Visual Basicで簡易CADを作成 / shiro (25/08/09(Sat) 19:18) #103844
                                            │  └ Re[25]: Visual Basicで簡易CADを作成 / 魔界の仮面弁士 (25/08/06(Wed) 19:53) #103833
                                            └ Re[23]: Visual Basicで簡易CADを作成 / shiro (25/08/18(Mon) 12:41) #103847
                                              └ Re[24]: Visual Basicで簡易CADを作成 / kiku (25/08/20(Wed) 15:09) #103848
                                                └ Re[25]: Visual Basicで簡易CADを作成 / shiro (25/08/20(Wed) 18:35) #103849
                                                  └ Re[26]: Visual Basicで簡易CADを作成 / kiku (25/08/21(Thu) 09:03) #103850
                                                    └ Re[27]: Visual Basicで簡易CADを作成 / shiro (25/08/21(Thu) 22:01) #103851
                                                      └ Re[28]: Visual Basicで簡易CADを作成 / kiku (25/08/22(Fri) 08:45) #103852
                                                        └ Re[29]: Visual Basicで簡易CADを作成 / shiro (25/08/22(Fri) 13:20) #103853
                                                          └ Re[30]: Visual Basicで簡易CADを作成 / kiku (25/08/22(Fri) 16:45) #103854
                                                            └ Re[31]: Visual Basicで簡易CADを作成 / shiro (25/08/22(Fri) 20:33) #103855
                                                              └ Re[32]: Visual Basicで簡易CADを作成 / kiku (25/08/25(Mon) 08:42) #103857

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信