Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
.NET 4.x

Обработка нажатия кнопки мыши в зависимости от условия

26.05.2016, 14:39. Показов 2201. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте!
У меня есть проект, в котором я использую сетку.
Мне нужно рисовать точки только места,
где оси пересекаются.Эти точки рисоват с помощью мыши.Мышь не следует делать в пустые коробки!
Как запретить мыши не рисует в пустых коробках?
Пожалуйста, если кто-нибудь может мне помочь.Простите меня для плохой русский язык!

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Private Sub picTest_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picTest.MouseDown  
  
  
Dim hstep As Double = picTest.Width / 12  
Dim vstep As Double = picTest.Height / 12  
  
Dim myPen As New Pen(Color.Red, 3)  
Dim g As Graphics = Graphics.FromImage(gBitmap)  
  
picAG.Refresh()  
  
If e.Button = System.Windows.Forms.MouseButtons.Left Then  
points.Add(e.Location) ' add point on left click  
For i As Integer = 0 To points.Count - 1  
g.DrawRectangle(myPen, points(i).X - 2, points(i).Y - 2, 5, 5)  
Next  
  
  
End If  
  
  
If (NewPolygon IsNot Nothing) Then  
If (e.Button = MouseButtons.Right) Then  
gBitmap = Nothing  
' Finish this polygon.  
If (NewPolygon.Count > 0) Then Polygons.Add(NewPolygon)  
NewPolygon = Nothing  
picTest.Image = gBitmap  
  
Else  
' Add a point to this polygon.  
If (NewPolygon(NewPolygon.Count - 1) <> e.Location) Then  
  
Dim i As Integer  
For i = 0 To 12  
NewPolygon.Add(New Point(e.X, e.Y )'Here I think to use'hstep,vstep and i',but I don`t know how to do ?!  
picTest.Image = gBitmap  
  
Next i  
End If  
End If  
  
Else  
' Start a new polygon.  
NewPolygon = New List(Of Point)()  
NewPolygon.Add(e.Location)  
NewPoint = (e.Location)  
End If  
  
  
' Redraw.  
picTest.Invalidate()  
  
'Dispose of objects  
myPen.Dispose()  
g.Dispose()  
  
Private Sub picTest_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picTest.MouseMove  
  
If (NewPolygon Is Nothing) Then Exit Sub  
NewPoint = e.Location  
' Redraw.  
picTest.Invalidate()  
End Sub  
  
Private Sub picTest_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picTest.Paint  
Dim g As Graphics = e.Graphics  
Dim myPen As New Pen(Color.Red, 2)  
  
If (NewPolygon IsNot Nothing) Then  
  
' Draw the new polygon.  
If (NewPolygon.Count > 1) Then  
e.Graphics.DrawLines(myPen, NewPolygon.ToArray())  
  
  
For i As Integer = 0 To points.Count - 1  
e.Graphics.FillEllipse(Brushes.Green, points(i).X - 2, points(i).Y - 2, 5, 5)  
Next  
  
End If  
  
End If  
  
  
  
Dim hstep As Double = picTest.Width / 12  
Dim vstep As Double = picTest.Height / 12  
  
'Draw horizontal Line  
Dim X As Single = hstep  
For i As Integer = 0 To hstep  
  
g.DrawLine(New Pen(Color.Black, 2), New Point(X, 0), New Point(X, Height))  
X += hstep  
Next i  
  
Dim Y As Single = vstep  
For i As Integer = 0 To vstep  
  
'Draw Vertical Line  
g.DrawLine(New Pen(Color.Black, 2), New Point(0, Y), New Point(Width, Y))  
Y += vstep  
Next i  
  
End Sub
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2016, 14:39
Ответы с готовыми решениями:

Как заблокировать кнопки(возможность их нажатия) в зависимости от условия?
Допустим имеются на форме окошко ввода, кнопки с цифрами(1-9) и кнопки с буквами(A-G). вот условия: - нельзя вводить цифры...

Вращение квадрата меняется в зависимости от нажатия кнопки мыши
Добрый вечер. У меня почему-то не получается поменять движение вращения квадрата(квадрат должен вращаться в другую сторону при нажатии...

Обработка нажатия кнопки мыши
Друзья, начал разбираться с qt, нужна ваша помощь. Хочу обработать нажатие левой кнопки мыши на объект qgraphicsview. Проблема в написании...

13
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
26.05.2016, 23:39
Постановка задачи непонятна. Если вам трудно это выразить словами, добавляйте картинки. М.б. это хоть как то прояснит суть. Приведенный код малоинформативен (что, откуда, зачем).
Привожу код, который возможно хоть как то соотносится с вашей задачей (строится сетка и по клику мыши рисуется круг в ближайшем узле сетки).
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Public Class Form6
    Private pn1 As Pen
    Private sd, x, y, rr As Integer
    Private isDown As Boolean
    Private Sub Form6_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        pn1 = New Pen(Brushes.Red, 1)
        sd = PictureBox1.Width \ 12
        rr = 5
    End Sub
    Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            x = (Math.Round(e.X / sd)) * sd
            y = (Math.Round(e.Y / sd)) * sd
            isDown = True
        Else
 
        End If
        PictureBox1.Invalidate()
    End Sub
    Private Sub PictureBox1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
        isDown = False
    End Sub
    Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim g As Graphics = e.Graphics
        drawGrid(sd, pn1, g)
        If isDown Then
            g.FillEllipse(Brushes.MediumBlue, New Rectangle(New Point(x - rr, y - rr), New Size(2 * rr, 2 * rr)))
        End If
    End Sub
    Private Sub drawGrid(ByVal side As Integer, ByVal pn As Pen, ByVal g As Graphics)
        Dim p1, p2 As Point
        Dim hh As Integer = PictureBox1.Height \ side
        Dim ww As Integer = PictureBox1.Width \ side
        For i = 0 To PictureBox1.Width \ side
            p1 = New Point(side * i, 0)
            p2 = New Point(side * i, hh * side)
            g.DrawLine(pn, p1, p2)
        Next
        For i = 0 To PictureBox1.Height \ side
            p1 = New Point(0, side * i)
            p2 = New Point(ww * side, side * i)
            g.DrawLine(pn, p1, p2)
        Next
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
End Class
Миниатюры
Обработка нажатия кнопки мыши в зависимости от условия  
3
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
28.05.2016, 10:39  [ТС]
Сэр, вы меня правильно поняли.Вот что я хотел сказать-(строится сетка и по клику мыши рисуется круг в ближайшем узле сетки),а затем - нарисовать линию, которая следует за мышью.Я изменил немного код, который вы послали меня и теперь программа выполняет следующие действия:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Drawing2D
 
Public Class Form1
#Region "Local Variables"
    Private points As New List(Of Point)
 
    ' Each polygon is represented by a List(Of Point).
    Private Polygons As New List(Of List(Of Point))()
 
    ' Points for the new polygon.
    Private NewPolygon As List(Of Point) = Nothing
 
    ' The current mouse position while drawing a new polygon.
    Private NewPoint As Point
   
 
    'Create gBitmam for picRegion
    Private gBitmap As Bitmap
 
 
    Private pn1 As Pen
    Private sd, X, Y, rr As Integer
    Private isDown As Boolean
 
#End Region
#Region "MouseDown"
 
    Private Sub picRegion_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picRegion.MouseDown
 
        Dim myPen As New Pen(Color.Red, 3)
        Dim g As Graphics = Graphics.FromImage(gBitmap)
 
 
        If e.Button = System.Windows.Forms.MouseButtons.Left Then
            points.Add(e.Location) ' add point on left clic
            X = (Math.Round(e.X / sd)) * sd
            Y = (Math.Round(e.Y / sd)) * sd
            g.FillEllipse(Brushes.Red, New Rectangle(New Point(X - rr, Y - rr), New Size(2 * rr, 2 * rr)))
        End If
 
        picRegion.Refresh()
 
        '  If we are already drawing a polygon.
        If (NewPolygon IsNot Nothing) Then
            ' The right mouse button, finish this polygon.
            If (e.Button = MouseButtons.Right) Then
                gBitmap = Nothing
                ' Finish this polygon.
                If (NewPolygon.Count > 0) Then Polygons.Add(NewPolygon)
                NewPolygon = Nothing
                picRegion.Image = gBitmap
 
            Else
                ' Add a point to this polygon.
                If (NewPolygon(NewPolygon.Count - 1) <> e.Location) Then
                    X = (Math.Round(e.X / sd)) * sd
                    Y = (Math.Round(e.Y / sd)) * sd
                    NewPolygon.Add(New Point(X, Y))
                    picRegion.Image = gBitmap
 
                End If
            End If
 
        Else
            ' Start a new polygon.
            NewPolygon = New List(Of Point)()
            NewPolygon.Add(e.Location)
            NewPoint = (e.Location)
        End If
 
        ' Redraw.
        picRegion.Invalidate()
 
        'Dispose of objects 
        myPen.Dispose()
        g.Dispose()
 
    End Sub
 
    Private Sub picRegion_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picRegion.MouseMove
 
        If (NewPolygon Is Nothing) Then Exit Sub
        NewPoint = e.Location
 
        ' Redraw.
        picRegion.Invalidate()
    End Sub
#End Region
 
    Private Sub picRegion_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picRegion.Paint
 
        Dim g As Graphics = e.Graphics
        Dim myPen As New Pen(Color.Red, 2)
 
        drawGrid(sd, pn1, g)
        If (NewPolygon IsNot Nothing) Then
 
            ' Draw the new polygon.
            If (NewPolygon.Count > 1) Then
                e.Graphics.DrawLines(myPen, NewPolygon.ToArray())
                g.FillEllipse(Brushes.Red, New Rectangle(New Point(X - rr, Y - rr), New Size(2 * rr, 2 * rr)))
            End If
        End If
    End Sub
    Private Sub drawGrid(ByVal side As Integer, ByVal pn As Pen, ByVal g As Graphics)
 
        Dim p1, p2 As Point
        Dim hh As Integer = picRegion.Height \ side
        Dim ww As Integer = picRegion.Width \ side
        For i = 0 To picRegion.Width \ side
            p1 = New Point(side * i, 0)
            p2 = New Point(side * i, hh * side)
            g.DrawLine(pn, p1, p2)
        Next
        For i = 0 To picRegion.Height \ side
            p1 = New Point(0, side * i)
            p2 = New Point(ww * side, side * i)
            g.DrawLine(pn, p1, p2)
        Next
    End Sub
 
    Private Sub picRegion_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picRegion.MouseUp
        isDown = False
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        gBitmap = New Bitmap(picRegion.Width, picRegion.Height)
        pn1 = New Pen(Brushes.Red, 1)
        sd = picRegion.Width \ 12 ' number of boxes
        rr = 5 'radius of point
 
    End Sub
 
End Class
Миниатюры
Обработка нажатия кнопки мыши в зависимости от условия  
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
28.05.2016, 13:20
stom1,
Чтобы получить такую же картинку как у вас достаточно внести небольшие изменения в приведенный выше код.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private points As New List(Of Point)
'…
Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Left Then
        Dim x As Integer = (Math.Round(e.X / sd)) * sd
        Dim y As Integer = (Math.Round(e.Y / sd)) * sd
        points.Add(New Point(x, y))
        isDown = True
    Else
 
    End If
    PictureBox1.Invalidate()
End Sub
Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    Dim g As Graphics = e.Graphics
    drawGrid(sd, pn1, g)
    If isDown Then
        For Each p As Point In points
            g.FillEllipse(Brushes.MediumBlue, New Rectangle(New Point(p.X - rr, p.Y - rr), New Size(2 * rr, 2 * rr)))
        Next
    End If
    If points.Count > 1 Then g.DrawLines(Pens.MediumBlue, points.ToArray)
End Sub
'…
Так и осталось непонятным назначение списка Polygons и объекта gBitmap.
1
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
28.05.2016, 15:58  [ТС]
Я пытаюсь преобразовать проект vb6 to vb.net
Этот проект включает в себя рисование некоторые графики.
Оказалось, что преобразование графики очень сложно для меня.
В начале я использовал Polygons и объект gBitmap для других целей в этом проекте.
Позже я решил использовать их рисовать линию и круг,но это был не правильный путь.
Графическая линия, которая описывает ваш код,оченъ похожется линия, что мне нужна.
Существует еще одна деталь, но я не могу это объяснить.Я должен показать его.Если у вас есть vb6.0,я могу отправить вам оригинал,чтобы увидеть как он должен работать.
Вы, наверное, профессионал или имеют большой опыт работы.Вы мне очень помогли!
Большое спасибо!
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
01.06.2016, 10:44  [ТС]
ovva, Я добавил X,Y линия прицела к коду/Ruler Line/.
Кроме того,я получяю координаты движения мыши в TextBox.

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 Private Sub PictureBox2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
        Dim g As Graphics = e.Graphics
        drawGrid(sd, pn1, g)
        isDown = True
        For Each p As Point In points
            g.FillEllipse(Brushes.Red, New Rectangle(New Point(p.X - rr, p.Y - rr), New Size(2 * rr, 2 * rr)))
 
        Next
 
        If points.Count > 1 Then g.DrawLines(New Pen(Color.Red, 2), points.ToArray)
 
 
 
 
        ''----------------------- Draw Vertical Ruler-------------------------------------------------------------------
 
 
 
        Dim y1 As Integer = PictureBox2.Height
        Dim y2 As Integer = (2 * PictureBox2.Height) \ 3
        Dim y3 As Integer = PictureBox2.Height \ 3
        Dim y4 As Integer = 0
 
        For i As Integer = 0 To PictureBox2.ClientSize.Width \ m_GridX
            If i Mod 10 = 0 Then
                e.Graphics.DrawLine(m_PenGrid, X, y1, X, y4)
            ElseIf i Mod 5 = 0 Then
                e.Graphics.DrawLine(m_PenGrid, X, y1, X, y3)
            Else
                e.Graphics.DrawLine(m_PenGrid, X, y1, X, y2)
            End If
            X += m_GridX
        Next i
        'Show the mouse position.
        If m_Drawing Then
            e.Graphics.DrawLine(m_PenRulerDrawing, m_MouseX, y1, m_MouseX, 0)
        Else
            e.Graphics.DrawLine(m_PenRulerNormal, m_MouseX, y1, m_MouseX, 0)
        End If
        ''----------------------- Draw Horizontal Ruler-------------------------------------------------------------------------
        Dim x1 As Integer = PictureBox2.Width
        Dim x2 As Integer = (2 * PictureBox2.Width) \ 3
        Dim x3 As Integer = PictureBox2.Width \ 3
        Dim x4 As Integer = 0
 
        For i As Integer = 0 To PictureBox2.Height \ m_GridY
            If i Mod 10 = 0 Then
                e.Graphics.DrawLine(m_PenGrid, x1, Y, x4, Y)
            ElseIf i Mod 5 = 0 Then
                e.Graphics.DrawLine(m_PenGrid, x1, Y, x3, Y)
            Else
                e.Graphics.DrawLine(m_PenGrid, x1, Y, x2, Y)
            End If
            Y += m_GridY
        Next i
        'Show the mouse position.
        If m_Drawing Then
            e.Graphics.DrawLine(m_PenRulerDrawing, x1, m_MouseY, x4, m_MouseY)
        Else
            e.Graphics.DrawLine(m_PenRulerNormal, x1, m_MouseY, x4, m_MouseY)
        End If
    End Sub
'-------------------------------------------------------------------------------------------
 Private Sub PictureBox2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseMove
 
        '-----------------------------------------------------------------------------------------
        Dim x As Integer = (Math.Round(e.X / sd)) * sd
        Dim y As Integer = (Math.Round(e.Y / sd)) * sd
        LocalMousePosition.X = x
        LocalMousePosition.Y = y
 
        If x = 26 Then
            txtXY.Text = ("Hz=" & "125" & "," & "dB=" & y / sd * 10) 
End if
'-----------------------------------------------------------------------
 
        End If
        If x = 52 Then
            txtXY.Text = ("Hz=" & "250" & "," & "dB=" & y / sd * 10)  
        End If
        If x = 78 Then
            txtXY.Text = ("Hz=" & "500" & "," & "dB=" & y / sd * 10)  
        End If
        If x = 104 Then
            txtXY.Text = ("Hz=" & "750" & "," & "dB=" & y / sd * 10)  
        End If
        If x = 130 Then
            txtXY.Text = ("Hz=" & "1K" & "," & "dB=" & y / sd * 10)   
        End If
        If x = 156 Then
            txtXY.Text = ("Hz=" & "1.5K" & "," & "dB=" & y / sd * 10) 
        End If
        If x = 182 Then
            txtXY.Text = ("Hz=" & "2.0K" & "," & "dB=" & y / sd * 10) 
        End If
        If x = 208 Then
            txtXY.Text = ("Hz=" & "3K" & "," & "dB=" & y / sd * 10) 
        End If
        If x = 234 Then
            txtXY.Text = ("Hz=" & "4K" & "," & "dB=" & y / sd * 10)   
        End If
        If x = 260 Then
            txtXY.Text = ("Hz=" & "6K" & "," & "dB=" & y / sd * 10)   
        End If
        If x = 286 Then
            txtXY.Text = ("Hz=" & "8K" & "," & "dB=" & y / sd * 10)  
        End If
 
        
       
        m_X2 = e.X
        m_Y2 = e.Y
        ShowMousePosition(m_X2, m_Y2)
    End Sub
'-------------------------------------------------------------------------------------------------
У меня есть еще одна задача,но я не могу сам решить.
Линия, которая рисует мышь надо выглядеть так:
Пожалуйста, помогите мне.
Спасибо!
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
01.06.2016, 16:18
Я вас не понимаю.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
01.06.2016, 17:20  [ТС]
Я пытаюсь прикрепить файл,но oн большой!
Сейчас я попробую снова
Вложения
Тип файла: rar VID_20160601_170951.rar (3.87 Мб, 9 просмотров)
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
01.06.2016, 19:47
Лучший ответ Сообщение было отмечено stom1 как решение

Решение

stom1,
Воспроизвел, как понял, процесс из приложенного файла.
Внесите изменения в приведенный выше код.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form6_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'…
    PictureBox1.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    If e.Button = Windows.Forms.MouseButtons.Left Then
        Dim x As Integer = (Math.Round(e.X / sd)) * sd
        Dim y As Integer = (Math.Round(e.Y / sd)) * sd
        If points.Count > 0 Then
            If x < points(points.Count - 1).X Then
                isDown = False
                Exit Sub
            ElseIf x = points(points.Count - 1).X Then
                points.RemoveAt(points.Count - 1)
            End If
        End If
        points.Add(New Point(x, y))
        isDown = True
    End If
    PictureBox1.Invalidate()
End Sub
Миниатюры
Обработка нажатия кнопки мыши в зависимости от условия  
1
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
06.07.2016, 10:23  [ТС]
Привет,
Я хочу выразить свою благодарность за вашу помощь.
В течение одного месяца я пытался добавить еще одну функциональность к код что вы мне дали,
но я не могу это сделать!Пожалуйста, если вы можете помочь мне снова.
Я не могу объяснить правильно, что мне нужно, поэтому я посылаю вам исходный код программы, который используется Chart Controls.
Спасибо.
Вложения
Тип файла: rar Example.rar (72.1 Кб, 10 просмотров)
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
06.07.2016, 14:21
Цитата Сообщение от stom1 Посмотреть сообщение
Я не могу объяснить правильно
Попробую вам помочь. Красным цветом вы хотите обозначить исходное состояние графика. Так?
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
06.07.2016, 14:31
Посмотрел ваш проект (правда он у меня почему то не загрузился (VS2010), и пришлось собрать его заново), но так и не понял какая задача решается и какую функциональность вы хотите добавить.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
06.07.2016, 14:34  [ТС]
Через полчаса я будет отправить вам видео
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 13
06.07.2016, 16:50  [ТС]
Этот код работает хорошо:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub PictureBox2_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseDown
 
    If e.Button = Windows.Forms.MouseButtons.Left Then
        Dim x As Integer = (Math.Round(e.X / sd)) * sd
        Dim y As Integer = (Math.Round(e.Y / sd)) * sd
 
        If points.Count > 0 Then
            If x < points(points.Count - 1).X Then
                isDown = False
                Exit Sub
            ElseIf x = points(points.Count - 1).X Then
                points.RemoveAt(points.Count - 1)
            End If
        End If
        points.Add(New Point(x, y))
        isDown = True
    End If
 
    PictureBox2.Invalidate()
 
End Sub
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub PictureBox2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox2.Paint
    Dim g As Graphics = e.Graphics
    drawGrid(sd, pn1, g)
    isDown = True
    For Each p As Point In points
        g.FillEllipse(Brushes.Red, New Rectangle(New Point(p.X - rr, p.Y - rr), New Size(2 * rr, 2 * rr)))
 
    Next
 
    If points.Count > 1 Then g.DrawLines(New Pen(Color.Red, 2), points.ToArray)
End Sub
Я хотел бы добавить следующие функциональные возможности:
Вложения
Тип файла: rar VID_20160706_163040.rar (8.46 Мб, 19 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2016, 16:50
Помогаю со студенческими работами здесь

Обработка нажатия кнопки мыши
Друзья, нужна ваша помощь. Переопределил virtual void mousePressEvent(QMouseEvent *even); И считываю координаты нажатия. И координаты мне...

Обработка нажатия кнопки мыши + клавиатуры
Доброго времени суток. Подскажите пожалуйста, каким образом можно организовать обработчик события и какое должно быть событие для...

Обработка нажатия правой кнопки мыши
Вопрос по сабжу. Как реализовать на компоненте TPanel?

QML обработка события нажатия кнопки мыши
Собственно. Есть вот такой вот main.qml: import QtQuick 1.1 Rectangle { id: rectangle2 width: 360 height: 360

Обработка нажатия на Button и программное нажатие правой кнопки мыши
Здравствуйте! Разбираюсь в винапи, есть окно с кнопкой, которая должна включать/выключать перемещение курсора и клик мышью в окне. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru