|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
Ошибка при рисовании линий и окружностей27.01.2016, 14:19. Показов 2702. Ответов 18
Метки нет (Все метки)
Здравствуйте, коллеги,Пытаюсь помочь Disilly с его проблемой рисования графиков на пользовательской форме, но у меня не получается даже нарисовать простую линию или окружность, не говоря уже о более сложных изображениях. Просмотрел похожие темы (по рисованию на форме), но примеры из этих тем у меня также не работают. В моем коде все успешно обрабатывает до самого последнего этапа, а вот само рисование-то и не получается. Причем, после замены функции GetDC на более информативную функцию BeginPaint заметил следующую странность: размеры прямоугольника рисования (обозначенного мной как drawingRect) равны нулю! Очень странно. Если бы вы объяснили мне, где я напортачил, я был бы вам очень признателен. Да и Disilly помогли бы в итоге. С уважением, АксимаP.S. На всякий случай - у меня Office 2013, 64-битная версия.
1
|
|
| 27.01.2016, 14:19 | |
|
Ответы с готовыми решениями:
18
Ошибка в рисовании окружностей Ошибка в рисовании линий
|
|
90 / 37 / 14
Регистрация: 03.11.2010
Сообщений: 429
|
|
| 27.01.2016, 20:39 | |
|
посмотрите http://www.andypope.info/vba/userformdraw.htm
на практике я бы воспользовался GetDC, т. к. не знаком с BeginPaint попробуйте UserForm_Initialize заменить на активате
1
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||
| 28.01.2016, 14:57 [ТС] | |||
|
После целой ночи разбирательств, кажется, установил причину проблемы. Если создать окно в C++ и попытаться нарисовать в окне что-нибудь, скажем, по клику мыши, то также ничего не нарисуется. Точнее, нарисуется, но после обработки события WM_PAINT все нарисованное будет уничтожено. А вот после того, как я реализовал перехват сообщения WM_PAINT, запретив системе самостоятельно перерисовывать окно, стало возможным лицезреть результаты трудов по рисованию в окне. Сейчас работаю над реализацией перехвата этого сообщения в VBA. Пока ничего не получается, что и не удивительно - голова уже не варит должным образом после такой ночки... Когда удастся этого добиться - обязательно опубликую свое решение. С уважением, Аксима
0
|
|||
|
Супер-модератор
|
|||||||||||
| 28.01.2016, 17:43 | |||||||||||
Сообщение было отмечено Аксима как решение
Решение
Дорогой Аксима!
Поскольку я не смог увидеть Ваш код, взгляните на мой (Проверил в Office-200). Рисование поверх формы на чистом API:
1
|
|||||||||||
|
oh my god
|
||
| 28.01.2016, 18:03 | ||
|
а к чему этот ряд чисел ? тут же не видно что это ответ ли это ))
решение ли это ? или это исправление ошибки рисования Добавлено через 5 минут
0
|
||
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 29.01.2016, 11:19 [ТС] | |
|
Catstail, я потрясен!!! Скачал ваш файл, нажал на кнопку - все работает! Скопировал свой код из файла DrawingGraphs.xlsm в вашу форму, нажал на кнопку - все работает!! Магия какая-то...
В общем, вы меня спасли, и это без всякого преувеличения, а то вполне мог бы в больницу попасть, если бы не удалось с этой проблемой разобраться. С уважением, Аксима
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 29.01.2016, 11:42 [ТС] | |
|
Хотел ваш файлик переделать, чтобы рисовал не по нажатию кнопки, а по событию Initialize формы, как в моем файле, но... ничего не получилось. Не рисует. Видимо, в этом и состояла моя ошибка - в неудачном выборе события для рисования, и никакой магии... Поскольку ни Initialize, ни Activate не работают, то видимо, придется обходить проблему через Application.OnTime...
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|
| 29.01.2016, 11:55 [ТС] | |
|
С Application.OnTime все работает как и мечталось... Как же я доволен! И Catstail большой молодец, без его файла я бы еще долго мучался с диагностикой проблемы.
1
|
|
|
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
|
|
| 29.01.2016, 11:56 | |
|
Аксима,подскажите пожалуйста почему форма не инициализируется сразу.А потом выдает ошибку
Не по теме: У меня 2003 офис
0
|
|
|
oh my god
|
|
| 29.01.2016, 12:07 | |
|
OLEGOFF, Проверьте еще раз может вы зря говорите
если результат будет отрицательный, звоните 8 914 468 8320
0
|
|
|
1082 / 523 / 141
Регистрация: 27.02.2013
Сообщений: 1,508
|
|
| 29.01.2016, 12:21 | |
|
0
|
|
|
Заблокирован
|
|
| 29.01.2016, 12:33 | |
|
1
|
|
|
|
|
| 29.01.2016, 16:42 | |
|
Не по теме: xtreme, привет!
* 1 ** 8, не считая конкурсных (там их под сотню)
1
|
|
|
oh my god
|
|
| 29.01.2016, 17:00 | |
|
нее .. )) надо чтото совсем необычное..
0
|
|
|
6082 / 1327 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
|
|||
| 29.01.2016, 17:28 [ТС] | |||
|
Прикладываю исправленный файл.
1
|
|||
|
Супер-модератор
|
||||||
| 31.01.2016, 10:27 | ||||||
|
Аксима, чтобы изображение на форме было "устойчивым" и не портилось при перемещениях за пределы экрана, нужно, отрисовав картинку, занести ее в свойство Picture формы. Поискал в Cети, нашел на одном форуме подходящий код и чуть-чуть его подрихтовал (для своего случая). Изображение теперь устойчиво (то, что в VB обеспечивается свойством Autoredraw=True).
Кстати, стоит испытать эту технику для рисования в Image...
1
|
||||||
| 31.01.2016, 10:27 | |
|
Помогаю со студенческими работами здесь
19
Разная толщина линий при рисовании методом DrawLine
ошибка при рисовании!!! Ошибка при рисовании сферы Ошибка при рисовании на канве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|