7 / 15 / 0
Регистрация: 08.03.2011
Сообщений: 100
1

Рисование на PictureBox мышкой

09.05.2011, 19:48. Показов 6306. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи программисты такая задача для умных.рисование на PictureBox с помощью мышки...
То есть что требуется....есть пикчер бокс....во время выполнения мы мышкой ставим на нем две точки(эти точки будут вершины квадрата, которые находятся по диагонали друг к другу) и программа рисует квадрат...либо вариант с окружностью....одна точка центр окружности...другая- точка, лежащая на окружности...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2011, 19:48
Ответы с готовыми решениями:

Перемещение большой картинки мышкой внутри PictureBox
Всем привет. Есть Панель на которой расположен PictureBox, в него загружается картинка большого...

Рисование мышкой. При нажатии левой кнопки мыши и ее перемещении рисуется кривая
У меня vb 2010 надо написать программу при нажатии левой кнопки мышки и ее перемещении рисуется...

Рисование текста в PictureBox
Работаю в VS 2013. В VB 6.0 это осуществлялось так Private Sub Command1_Click() x = 127...

Рисование на picturebox и сохранение в файл
Добрый день, visual basic 2008 задача: рисовать но нажатию клавиши мышки, и иметь возможность...

3
Почетный модератор
21374 / 9108 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
09.05.2011, 20:46 2
Первый велосипед, что пришел в голову.
Даю пищу для размышлений, ведь весь секрет в массиве точек
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Dim Pt As Point
    Dim P As New Collection
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Pts(P.Count - 1) As Point
        For I As Integer = 0 To Pts.Length - 1
            Pts(I) = P(I + 1)
        Next
        Dim g As Graphics = Me.CreateGraphics
        g.DrawCurve(Pens.Blue, Pts)
    End Sub
 
    Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
        Pt = e.Location
        P.Add(Pt)
    End Sub
Добавлено через 14 минут
Блин, не то... Недопонял и насвистел
0
7 / 15 / 0
Регистрация: 08.03.2011
Сообщений: 100
09.05.2011, 22:07  [ТС] 3
Да что то не совсем тто(((((еще варианты друзья..
0
_
2363 / 1241 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
09.05.2011, 22:22 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Barmaglo, год назад подобной фигней маялся - щелкаешь по форме сколько надо точек и все координаты щелчка заносишь в список или массив. Потом по массиву выполняешь отрисовку на форме нужной фигуры.
поиграйся с этим кодом, год назад делал
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
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Math
 
Public Class Form1
 
    Dim line = False
    Dim colors() As String = New String() {"Черный", "Красный", "Зеленый", "Синий", "Желтый"}
    Dim figura As Object
    Dim queue_points_x As New Queue()
    Dim queue_points_y As New Queue()
        Dim Regim As Integer
 
    Private Sub Mouse_Click(ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles Me.Click
 
        queue_points_x.Enqueue(e.X)
        queue_points_y.Enqueue(e.Y)
 
        If queue_points_x.Count > 1 And queue_points_y.Count > 1 Then
            Drawing()
        End If
    End Sub
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListBox1.Items.AddRange(colors)
    End Sub
 
    Private Sub Drawing()
 
        Dim x1, x2, y1, y2, x3, x4, y3, y4 As Integer
        Dim gr As Graphics = Me.CreateGraphics()
        If Regim = 2 And queue_points_x.Count > 3 And queue_points_y.Count > 3 Then
            x1 = queue_points_x.Dequeue()
 
            y1 = queue_points_y.Dequeue()
            x2 = queue_points_x.Dequeue()
            y2 = queue_points_y.Dequeue()
            x3 = queue_points_x.Dequeue()
            y3 = queue_points_y.Dequeue()
            x4 = queue_points_x.Dequeue()
            y4 = queue_points_y.Dequeue()
 
 
            gr.DrawPolygon(Pens.Beige, New Point() {New Point(x1, y1), New Point(x2, y2), New Point(x3, y3), New Point(x4, y4)})
        ElseIf Regim = 1 Then
            x1 = queue_points_x.Dequeue()
 
            y1 = queue_points_y.Dequeue()
            x2 = queue_points_x.Dequeue()
            y2 = queue_points_y.Dequeue()
 
            gr.DrawLine(Pens.Beige, x1, y1, x2, y2)
        End If
        
    End Sub
 
 
  
    Private Sub ПрямоугольникToolStripMenuItem1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ПрямоугольникToolStripMenuItem1.Click
        Regim = 2
    End Sub
 
    Private Sub ЛинияToolStripMenuItem1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ЛинияToolStripMenuItem1.Click
        Regim = 1
    End Sub
End Class
Правда сейчас я бы так не делал - лучше вместо очереди использовать обычный список и сохранять туда - точки полностью, а не по отдельности координаты
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2011, 22:22
Помогаю со студенческими работами здесь

Рисование в PictureBox без затирания нарисованного
При клике рисую в picturebox1 линию, потом с помощью другой кнопки надо нарисовать линию, чтобы...

Установка цвета фона PictureBox и последующее рисование на контейнере
Здравствуйте! Такая проблема: при исполнении данной программы сначала делается рисунок на Picture...

Рисование линии мышкой на PictureBox
Всем привет. Решил побаловаться, попробовать реализовать некое подобие Paint на C#. Начал с...

Рисование мышкой Qt
Привет всем. Осваиваю Qt и возник вопрос, как нарисовать мышкой прямую линию (как инструмент...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru