Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
17 / 19 / 4
Регистрация: 03.02.2010
Сообщений: 262

Вписать один Picture control в другой Picture Control на MFC C++

25.05.2020, 18:52. Показов 989. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день, господа! Подскажите пожалуйста как в экранных координатах (проект MFC C++) один Picture Control вписать в другой чтобы меньший по размеру располагался внутри большего четко по центру? В Picture Control загружаются две разные картинки, больший по размеру выступает в роли рамки для этой картинки.

Вот код с помощью которого происходит центровка меньшего по размеру Picture Control внутри большего Picture Control, но подгонку по X и Y приходится делать вручную, как это сделать с помощью формулы?

C++
1
2
3
4
5
6
7
8
9
m_SCREEN.MoveWindow(0, 0, 640, 480);//устанавливаем размер picture control 1
m_BORDER.MoveWindow(0, 0, 840, 680);//устанавливаем размер picture control 2
 
CRect rectvideoScreen;// квадрат в который получаем размеры picture control 1
CRect rectVideoBorder;// квадрат в который получаем размеры picture control 2
 
m_SCREEN.GetWindowRect(&rectvideoScreen);// Получаем размеры picture control 1, m_SCREEN - это переменная CStatic для picture control 1
m_BORDER.GetWindowRect(&rectVideoBorder);// Получаем размеры picture control 2, m_BORDER - это переменная CStatic для picture control 2
m_BORDER.MoveWindow(rectvideoScreen.left - 140, rectvideoScreen.top-135, rectVideoBorder.Width(), rectVideoBorder.Height());// Центруем один picture control внутри другого вручную
Получается как нужно изменить последнюю строчку в приведенном коде чтобы не в ручную я подбирал "X - 140", "Y - 140" , а по формуле один квадрат в другой вписывался точно. Известны размеры обоих квадратов и их оконные координаты. В данном случае мне нужно чтобы больший по размеру квадрат как бы описывал меньший по контуру.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2020, 18:52
Ответы с готовыми решениями:

MFC Picture Control
Скажите пожалуйста у меня на диалоге есть picture control, в ресурсах я добавила картинку в формате bmp как сделать, что бы по нажатию на...

MFC Picture Control
как сделать что бы Picture Control появлялся только после нажатия кнопки ?

MFC, Picture Control - скрытие изображения
Здравствуйте. Пишу небольшой проектик на MFC в Visual Studio c++ 2005. На форме расположено изображение с помощью Picture Control. ...

4
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.05.2020, 19:21
Цитата Сообщение от al072 Посмотреть сообщение
данном случае мне нужно чтобы больший по размеру квадрат как бы описывал меньший по контуру.
C++
1
2
3
4
m_SCREEN.GetWindowRect(&r1);// Получаем размеры picture control 1, m_SCREEN - это переменная CStatic для picture control 1
m_BORDER.GetWindowRect(&r2);// Получаем размеры picture control 2, m_BORDER - это переменная CStatic для picture control 2
 
m_SCREEN.MoveWindow(r2.left + (r2.Width() - r1.Width()) / 2, r2.top + (r2.Height() - r1.Height()) / 2, r1.Width(), r1.Height());
1
17 / 19 / 4
Регистрация: 03.02.2010
Сообщений: 262
25.05.2020, 20:10  [ТС]
m_SCREEN.MoveWindow(r2.left + (r2.Width() - r1.Width()) / 2, r2.top + (r2.Height() - r1.Height()) / 2, r1.Width(), r1.Height());
oleg-m1973, большое спасибо за ответ, но к сожалению эта формула не решает мою задачу. Квадрат получается вписанный но не по центру. Посмотрите пожалуйста, может какая ошибка в формуле или у меня руки кривые но не выходит... По вашей формуле всяко разно пробовал и r1, r2 местами менял., не ровно получается
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
25.05.2020, 20:27
Цитата Сообщение от al072 Посмотреть сообщение
Квадрат получается вписанный но не по центру. Посмотрите пожалуйста, может какая ошибка в формуле или у меня руки кривые но не выходит... По вашей формуле всяко разно пробовал и r1, r2 местами менял., не ровно получается
C++
1
2
3
4
5
6
    m_SCREEN.GetWindowRect(&r1);// Получаем размеры picture control 1, m_SCREEN - это переменная CStatic для picture control 1
    m_BORDER.GetWindowRect(&r2);// Получаем размеры picture control 2, m_BORDER - это переменная CStatic для picture control 2
 
    ScreenToClient(&r2);
 
    m_SCREEN.MoveWindow(r2.left + (r2.Width() - r1.Width()) / 2, r2.top + (r2.Height() - r1.Height()) / 2, r1.Width(), r1.Height());
1
17 / 19 / 4
Регистрация: 03.02.2010
Сообщений: 262
25.05.2020, 21:34  [ТС]
oleg-m1973, огромное спасибо!!! Вопрос решен. Помогло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2020, 21:34
Помогаю со студенческими работами здесь

MFC Picture Control (error rc2108: expected numerical dialog constant)
Когда меняю в picture control - тип с фрейма на Точечный рисунок, при запуске выводит ошибку error rc2108 expected numerical dialog...

Picture control
Есть Picture control(bitmap), как программно создавать/убирать рамку(border), так чтобы позиция и размер картинки не менялись?

picture control
Привет, народ вообщем такая проблема: когда в диалоговое окно добавляю картинку и привязываюсь к главному окну, его заливка должна...

Picture Control, смена различных изображений из ресурсов
Здавствуйте,у меня вопрос такой- есть в диалоге mfc элемент управления Picture Control,в свойствах выбрано Bitmap,при нажатии кнопки я...

При нажатии кнопки смена картинки в Picture Control
Ребята подскажите как сделать, чтобы при нажатии на Button в Picture Control'e менялась картинка Добавлено через 21 минуту менялась...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru