Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
39 / 28 / 8
Регистрация: 14.04.2012
Сообщений: 249

Масштабирование изображения и его прокрутка курсором мыши

15.03.2015, 13:28. Показов 3542. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В windows есть программа работы с изображением, где крутя колёсико фото увеличивается или уменьшается относительно курсора и при удержании левой кнопки мыши можно передвигать фото.
Есть ли в vb.net класс для реализации этого эффекта или нужно создавать свой класс с набором инструментов? Тогда какие лучше инструменты использовать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2015, 13:28
Ответы с готовыми решениями:

Масштабирование и прокрутка изображения в PictureBox
Здравствуйте уважаемые) Пожалуйста, помогите подружить два кода найденные на этом форуме. У меня не получилось( 1-й код от Yury...

Прокрутка колесом мыши изображения в PictureBox
объясню наглядно ? вот что нужно в picturebox

Масштабирование изображения при прокрутке колеса мыши
Здравствуйте! Необходимо реализовать масштабирование изображения в PictureBox. Как по мне проблема распространенная, но внятной...

8
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
16.03.2015, 19:59
Готовых классов нет. Нужно помещать изображение на форму либо в PictureBox, отлавливать событие MouseWheel и масштабировать изображение по коэффициенту.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4357 / 3427 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
16.03.2015, 20:42
Цитата Сообщение от Замабувараев Посмотреть сообщение
масштабировать изображение
а как? это и интересно
0
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
17.03.2015, 00:07
В первом приближении
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
Public Class Form1
    Private myBmp As New Bitmap("ttt.jpg")
    Private w, h As Integer
    Private reg As Rectangle
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.DoubleBuffered = True
        w = myBmp.Width
        h = myBmp.Height
        reg = New Rectangle(0, 0, w, h)
        Me.Invalidate()
    End Sub
    Private Sub Form1_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel
        Dim d As Double = Math.Abs(e.Delta) - 100
        Dim dw As Double = w / d
        Dim dh As Double = h / d
        If (e.Delta > 0) Then
            reg.Width += dw
            reg.Height += dh
        Else
            reg.Width -= dw
            reg.Height -= dh
        End If
        Me.Invalidate()
    End Sub
    Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim g = e.Graphics
        g.Clear(Color.White)
        g.DrawImage(myBmp, reg)
    End Sub
End Class
2
 Аватар для MACHOMAN
54 / 30 / 4
Регистрация: 15.01.2014
Сообщений: 354
17.03.2015, 01:10
у меня ошибка
Миниатюры
Масштабирование изображения и его прокрутка курсором мыши  
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
17.03.2015, 06:17
Почему в коде "ttt.jpg", а в обозревателе ttt.jpg.png? Подозреваю, что он не может создать изображение из несуществующего файла.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
17.03.2015, 06:42
MACHOMAN, В инициализации формы идет обращение к некоему файлу ttt.jpg.
Данный файл ожидается в директории программы, и его, возможно, там нет.

Если Вы задумали загрузить его из ресурсов, то код будет выглядеть примерно так

VB.NET
1
Dim MyBmp As New Bitmap(My.Resources.ttt_jpg)
1
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
18.03.2015, 00:32
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

В развитие темы
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
Public Class Form2
    Private pPoint As Point
    Private dragging As Boolean
    Private myBmp As New Bitmap("ttt.jpg")
    Private w, h As Integer
    Private reg As Rectangle
    'на форме Panel1 и на Panel1 размещен PictureBox1
    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        PictureBox1.Size = New Size(Panel1.Width, Panel1.Height)
        PictureBox1.SizeMode = PictureBoxSizeMode.Normal
        w = myBmp.Width
        h = myBmp.Height
        reg = New Rectangle(0, 0, w, h)
        PictureBox1.Invalidate()
    End Sub
    Private Sub PictureBox1_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseWheel
        Dim d As Double = Math.Abs(e.Delta) - 100
        Dim dw As Double = w / d
        Dim dh As Double = h / d
        If (e.Delta > 0) Then
            reg.Width += dw
            reg.Height += dh
        Else
            reg.Width -= dw
            reg.Height -= dh
        End If
        PictureBox1.Size = New Size(reg.Width, reg.Height)
        PictureBox1.Invalidate()
    End Sub
    Private Sub PictureBox1_MouseEnter(sender As System.Object, e As System.EventArgs) Handles PictureBox1.MouseEnter
        If Not PictureBox1.Focused Then
            PictureBox1.Focus()
        End If
    End Sub
    Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim g = e.Graphics
        g.Clear(Color.White)
        g.DrawImage(myBmp, reg)
    End Sub
    Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        If e.Button = MouseButtons.Left Then
            dragging = True
            pPoint = New Point(e.X, e.Y)
        Else
            dragging = False
        End If
    End Sub
    Private Sub PictureBox1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        If e.Button = Windows.Forms.MouseButtons.Left And dragging = True Then
            Dim dX As Integer = (pPoint.X - e.X)
            Dim dY As Integer = (pPoint.Y - e.Y)
            PictureBox1.Location = New Point(PictureBox1.Location.X - dX, PictureBox1.Location.Y - dY)
        End If
    End Sub
    Private Sub PictureBox1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
        dragging = False
    End Sub
End Class
4
26 / 7 / 3
Регистрация: 11.04.2015
Сообщений: 14
13.10.2018, 11:05
Можно и по другому.Изучайте Чарльза Петцольда.У него есть функция вывода изображения в режиме ISOTROPIC.
Я ее немного расширил до перемещения и увеличения изображения мышью.
Вложения
Тип файла: rar ZoomImage.rar (3.56 Мб, 49 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2018, 11:05
Помогаю со студенческими работами здесь

Перемещение на клик мыши и поворот за курсором мыши
Как сделать чтобы смешарик шёл на клик мыши и поворачивался в сторону курсора? Можете дать скрипт?

Вывести поверх изображения его название при наведении курсора мыши
private void Form1_Paint(object sender, PaintEventArgs e) { Image img = Image.FromFile(@"d:\image003.jpg"); ...

Масштабирование текста с контрол+прокрутка
Уважаемые эксперты! Помогите решить задачу с увеличением и уменьшением шрифта в браузере. Пытаюсь решить проблему в коде известными мне...

Трудности с курсором мыши
Доброго времени суток, уважаемые форумчане.Проблема заключается в следующем : после работы за компьютером искажается курсор мыши(смотрим...

Работа с курсором мыши
Привет форумчанам! Хотел написать программу, суть которой заключается в: Пользователь щёлкает по форме (на которой отображается рабочий...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru