Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429

Проблемы с Лупой и увеличением картинки

06.12.2018, 09:00. Показов 1196. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
В проге юзеру надо выбирать (кликать на) линию толщиной 1 пиксель и, поскольку бывает трудно попасть мышкой точно по линии, решил сделать лупу, чтобы в режиме увеличения облегчить попадание.
Лупа сделана примитивно :
(поскольку окно проги всегда с координатами 0,0 и не имеет рамки, возможно использовать абсолютные координаты)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub picLupa_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single)
 
    ret = GetCursorPos(absXY)
    absX = absXY.X '
    absY = absXY.y '
 
    frmMain.picLupa.Move absX - (frmMain.picLupa.Width / 2), absY - (frmMain.picLupa.Height / 2) ’ центрируем лупу относительно стрелки мыши
    
    Zoom = 7
    StretchBlt frmMain.picLupa.hdc, 0, 0, 91, 91, frmMain.picCanvas.hdc, absX - Zoom, absY - Zoom, Zoom * 2, Zoom * 2, SRCCOPY  '
    frmMain.picLupa.Refresh
 
End Sub
Проблема в том, что на лупе линия имеет толщину скажем 7 пикселей но при перемещении мыши на 1 пиксель изображение сдвигается так, что на лупе мышь «проскакивает» сразу несколько пикселей, а мне надо чтоб мышь можно было двигать попиксельно (как бы на лупе) и пока мышь находится на любом пикселе из этих семи при клике я получал Х координату этой однопиксельной линии и картинка не меняется, то есть сейчас изображение на лупе сдвигается при каждом перемещении мыши на 1 пиксель, а надо чтоб показывался следующий участок изображения только тогда, когда мышка переходит 7пиксельную зону красного цвета и попадает на начало зелёной зоны. Как-то путано объяснил… но надеюсь всё-таки что-то да поймёте из моего блеяния
На рисунке зафиксировано как реально выглядит картина при движении мыши на 3 пикселя
Изображения
 
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2018, 09:00
Ответы с готовыми решениями:

Проблемы с увеличением ТИц
Продвигал сайт, регистрировал в каталогах, в тематических ресурсах. Изначально ТИЦ был 40. Прошло 3 недели трудов, результат остался...

Народ помогите с увеличением картинки в JS
Народ помогите с увеличением картинки в JS вот код, но он не работает, почему???? вроде все верно HEAD ---------- ...

Слайдер с увеличением картинки по клику. Есть вообще такой?
Встал перед неожиданной проблемой - все слайдеры просто крутят картинки, но при этом нельзя увеличить картинку кликом. Может, кто-нибудь...

9
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
06.12.2018, 21:42
Попробуй movewindow вместо move, move - двигает относительно формы, а GetCursorPos - даёт абсолютные координаты курсора, скорее всего отсюда и несоответствие в перемещениях.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
06.12.2018, 22:27  [ТС]
Ну, в принципе-то у меня так сделано, что абсолютные координати относительные -одинаковые. Форма без рамки и всегда X=0,Y=0.
Тут вот что я выяснил - этот StretchBlt весьма своеобразно увеличивает. Я сделал картинку из разноцветных пикселей и вот как увеличивается в 7 раз - чередуется: нечётные пиксели по горизонтали имеют ширину 7 пикселей, чётные - 6 пикс, и так же по по вертикали - 7-6-7-6-7-6. А я думал что равномерно растягивает каждый пиксель в 7 раз. Но и это на решает по-моему мою проблему - тут в логике я ошибаюсь, как-то по другому надо подойти к этому вопросу. а как-не догоняю...
Миниатюры
Проблемы с Лупой и увеличением картинки  
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
08.12.2018, 13:25
Цитата Сообщение от giaber Посмотреть сообщение
StretchBlt весьма своеобразно увеличивае
а почему собственно не BitBlt?
Цитата Сообщение от giaber Посмотреть сообщение
как-то по другому надо подойти к этому вопросу. а как-не догоняю...
без исходника сложно сказать.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
08.12.2018, 16:35  [ТС]
"а почему собственно не BitBlt?" - но ведь мне надо "растянуть" изображение? То есть я беру участок скажем 10х10 пикселей и показываю его в размере 70х70 пикселей, а BitBlt просто перенесёт блок в 10х10 пикселей с указанных XY позиций, новый размер-то (в Destination) вроде не задаётся в BitBlt?
"StretchBlt copies a section of an image from one device to another. This function also allows you to change the original size and dimensions of the image section, unlike the related function BitBlt."
---
"без исходника сложно сказать" - да в общем-то не нужон исходник, первый этап проблемы - перенести блок 10х10 пикселей с увеличением скажем в N раз таким образом, чтоб каждый пиксель превращался в блок с длиной N и шириной N пикселей.
Я могу это организовать вложеными циклами попиксельно, так сказать "в ручную", но думаю медленно будет...
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
08.12.2018, 17:36
Цитата Сообщение от giaber Посмотреть сообщение
вроде не задаётся в BitBlt?
- ну да, спутал-с, извиняй.
https://www.cyberforum.ru/atta... 1544279710
Вот самое простое увеличение стретчом, что у тебя не работает, так и не понятно.
Вложения
Тип файла: rar CMDLGtest.rar (314.9 Кб, 15 просмотров)
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
08.12.2018, 21:12  [ТС]
Не понимаю что я не так делаю - пытаюсь разобраться, хотя уже ясно, что StretchBlt не при чём - ошибка явно где-то моя.
Вот как увеличивется у меня и у вас (слева - моё, справа - ваше) ваше - то, чего я и пытался добиться:
Миниатюры
Проблемы с Лупой и увеличением картинки  
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
08.12.2018, 22:42
Ну видно же что конечный размер неверный.
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
09.12.2018, 00:06
giaber, я как-то сразу не обратил внимание, а
The trick, - прав
Цитата Сообщение от giaber Посмотреть сообщение
91, 91,
- подставь сюда размеры лупы.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
09.12.2018, 09:59  [ТС]
Да, всё так и есть. Который раз приходится приносить глубочайшие извинения за то, что поднял бучу на пустом месте.
БОЛЬШОЕ спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2018, 09:59
Помогаю со студенческими работами здесь

Проблемы с загрузкой картинки
Есть таблица в аксесе, одно из полей которой "Фото" с типом данных OLE. Загружаю туда картинки. Затем в дельфи перетаскиваю компонент...

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

Проблемы с подергиванием картинки | Новая видеокарта
Всем привет! Купил новую видеокарту RX 570, заодно и новый монитор AOC 2270swn. В итоге следующая проблема: картинка дергается, как...

Галерея с увеличением изображений
Здравствуйте, на странице лежат картинки: <div class="content"> <div id="content-text"> <div class="gallery"> ...

Переменная с увеличением на 1 в цикле
Здравствуйте есть цикл с оператором while, выводит повторяющиеся блоки. Каждому блоку нужно добавить свой айдишник. Как задать переменную,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru