Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686

Найти центр PictureBox на форме

14.05.2021, 09:12. Показов 5754. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть форма. На ней расположены два PictureBox. Надо найти центр PictureBox. Пробовал так
VB.NET
1
2
x1 = PictureBox1.Width / 2 - 358
y1 = PictureBox1.Height /2 - 142
Но при новых загрузках КП. При изменении размера формы центр уходит. Как правильно найти центр PictureBox. Прошу помощи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2021, 09:12
Ответы с готовыми решениями:

Найти центр масс пластинки из однородного материала в форме геометрической фигуры
Как известно, координаты центра масс плоской фигуры даются формулами где - масса фигуры, р{х, у) - ПЛОТНОСТЬ материала....

Автоматическая прокрутка PictureBox в центр изображения
Имеется код который отрисовывает кое-что на картинке: panel1.AutoScroll = true; Map.SizeMode =...

Как в PictureBox В ЦЕНТР вставить уменьшенное изображение?
Как в PictureBox ВЦЕНТР вставить изображение, уменьшенное, но соразмерное??? Просто нужно сросно...,подскажите пЖалуйста, кто знает, буду...

23
Любитель
 Аватар для Тим70
1074 / 786 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
14.05.2021, 19:33
Студворк — интернет-сервис помощи студентам
Извиняюсь.Не заметил,что разрешенном изменении нет кружка,но он там где нужно,хоть и больше по размеру,чем синий квадратик.
1
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686
14.05.2021, 19:36  [ТС]
Происходит смещение центров PictureBox. То есть этот код не даёт центров PictureBox при изменении размеров разрешения.
VB.NET
1
2
      x1 = PictureBox1.Width / 7.6 - 9
      y1 = PictureBox1.Height / 3.5 - 18
А как же всё таки найти код для получения центров PictureBox при изменении разрешения экранов?
0
Любитель
 Аватар для Тим70
1074 / 786 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
14.05.2021, 20:05
Лучший ответ Сообщение было отмечено vlad56 как решение

Решение

vlad56, У меня и при изменение расширения и при сжатии формы кружок остается в синем квадрате!Только его размер не вписывается и все Label смещаются.Так что центр найден.

Добавлено через 22 минуты
vlad56, Вот ваш код на котором я все проверял.Сравните.
Кликните здесь для просмотра всего текста
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
138
139
140
141
142
143
144
145
146
147
148
149
150
Imports System.IO
Imports System.Windows.Forms
Imports System.Security.Permissions
Public Class Form1
    Public timeLeft As Integer = 30
    Dim iRand As Integer
    Dim x1, y1 As Single
    Dim b2 As SolidBrush
    Public Function LoadImageFromFile(path As String) As Image
        Try
            Using fs As New FileStream(path, FileMode.Open, FileAccess.Read)
                Dim img = Image.FromStream(fs)
                Return img
            End Using
        Catch ex As Exception
            Dim unused = MsgBox(Prompt:=ex.Message)
        End Try
        '# Disable Warning BC42105
        ' #region Disable Warning BC42105
    End Function
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        PictureBox1.BackgroundImage = LoadImageFromFile(Application.StartupPath & "\" & "Бункер.jpg")
        PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
        CountIRand()
        PictureBox2CreateGraphics(iRand)
        'KeyPreview = True
        'Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
        'Me.MaximizeBox = False
 
        PictureBox1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Top
    End Sub
    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        CountIRand()
        PictureBox1CreateGraphics(iRand)
        CountIRand()
        PictureBox2CreateGraphics(iRand)
    End Sub
    Private Sub PictureBox2CreateGraphics(iRand)
        Dim g As Graphics = PictureBox2.CreateGraphics
        If iRand = 1 Then
            b2 = New SolidBrush(Color.Red)
        Else
            b2 = New SolidBrush(Color.LimeGreen)
        End If
        g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality 'качество отрисовки
        g.PageUnit = GraphicsUnit.Millimeter     'единица измерения - миллиметр
        g.FillEllipse(b2, x1, 0, 18, 18)
    End Sub
    Private Sub PictureBox1CreateGraphics(iRand)
        Dim g As Graphics = PictureBox1.CreateGraphics
        Dim b1 As SolidBrush
        If iRand = 1 Then
            b1 = New SolidBrush(Color.Red)
        Else
            b1 = New SolidBrush(Color.LimeGreen)
        End If
 
        g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality 'качество отрисовки
        g.PageUnit = GraphicsUnit.Millimeter     'единица измерения - миллиметр
        'x1 = PictureBox1.Width / 2 - 358
        'y1 = PictureBox1.Height - 270
 
        'x1 = PictureBox1.Width / 8.15
        'y1 = PictureBox1.Height / 4
 
        x1 = PictureBox1.Width / 7.6 - 9
        y1 = PictureBox1.Height / 3.5 - 18
 
 
        g.FillEllipse(b1, x1, y1, 18, 18)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Label2.Text = "0"
        Label4.Text = "0"
        Label6.Text = "0"
        Label7.Text = "0"
        Label10.Text = "0"
        Label11.Text = "0"
        Label13.Text = "0"
        Label15.Text = "0"
    End Sub
    Private Sub CountIRand()
        Dim oRand = New Random()
        oRand = New Random(DateTime.Now.Millisecond)
        iRand = oRand.Next(1, 3)
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If PictureBox2.Visible = False Then
            If b2.Color = Color.Red Then
                PictureBox2CreateGraphics(1)
            Else
                PictureBox2CreateGraphics(2)
            End If
            PictureBox2.Visible = True
            Button2.Text = "Скрыть"
        Else
            PictureBox2.Visible = False
            Button2.Text = "Показать"
        End If
    End Sub
    Private Sub Button1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Button1.PreviewKeyDown
        e.IsInputKey = True
    End Sub
    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Left Then
            If b2.Color = Color.Red Then
                Label2.Text = Label2.Text + 1
                Label6.Text = Label6.Text + 1
            Else
                Label2.Text = Label2.Text + 1
                Label10.Text = Label10.Text + 1
                Label13.Text = Label6.Text / Label2.Text * 100
            End If
        End If
 
        If e.KeyCode = Keys.Right Then
            If b2.Color = Color.LimeGreen Then
                Label4.Text = Label4.Text + 1
                Label7.Text = Label7.Text + 1
            Else
                Label4.Text = Label4.Text + 1
                Label11.Text = Label11.Text + 1
                Label15.Text = Label7.Text / Label4.Text * 100
            End If
        End If
        Label18.Text = Label18.Text + 1
        CountIRand()
        PictureBox2CreateGraphics(iRand)
        'CountIRand()
        'PictureBox1CreateGraphics(iRand)
    End Sub
    'Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
    '    Dim x2, x3, x4, y2, y3 As Integer
    '    x1 = PictureBox1.Width / 2 - 358
    '    y1 = PictureBox1.Height - 270
    '    x1 = PictureBox1.Width / 2 - 358
    '    y1 = PictureBox1.Height - 270
    '    x2 = (PictureBox1.Left) + PictureBox1.Width / 2
 
    '    y2 = (PictureBox1.Top) + PictureBox1.Height / 2
    '    x3 = Me.ClientSize.Width / 2
    '    x4 = Me.ClientSize.Width / 2 - PictureBox1.Width / 2
    '    y3 = Me.ClientSize.Height / 2 - PictureBox1.Height / 2 + 100
    '    PictureBox1.Location = New Point((Me.ClientSize.Width / 2 - PictureBox1.Width / 2), (Me.ClientSize.Height / 2 - PictureBox1.Height / 2))
    'End Sub
 
    Private Sub PictureBox2_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox2.Paint
 
    End Sub
End Class
1
3271 / 3377 / 559
Регистрация: 17.02.2019
Сообщений: 5,294
14.05.2021, 20:18
Я тут такой пришел. Покурил буковки может надо сделать перерисовку PictureBox при изменение размера формы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2021, 20:18

Создать PictureBox на второй форме с размерами из TextBox'ов, расположенных на первой форме
Добрый вечер, столкнулся с проблемой. У меня есть 2 TextBox'a, они находятся на первой форме. Мне нужно чтобы создавался PictureBox на...

1) Как заставить PictureBox появляться в форме без нажатия кнопки 2)Как заставить этот же PictureBox переместится
1)Как заставить PictureBox появляться в форме без нажатия кнопки? 2)Как заставить этот же PictureBox переместится справа на лево?

picturebox в форме
в моей программе несколько pictureboxов можно перемещать при помощи мыши,как можно сделать так чтоб picturebox не выходил за приделы формы?

Z-порядок pictureBox на форме
Добрый вечер, На форме несколько pictureBox с загруженными картинками и событиями (перемещения и поворота). У каждого pictureBox было...

Движение pictureBox по форме
добрый день, хотелось бы узнать, как реализовать движение pictureBox по форме? private void button1_Click(object sender,...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru