С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
1

Вывод картинки в CStatic

18.07.2011, 09:16. Показов 2960. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую!

У меня в наличии имеется массив пикселей картинки (24 бита есть массив и есть массив на 16 бит).

Вывод реализую так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 int bitsPerPexel = 24;
   unsigned int** masspixel24bits;
   BITMAP BitMap;
   CBitmap bmp;    
 
**************
    BitMap.bmType = 0;
    BitMap.bmWidth  = pConvertImage->sizeimg[width];
    BitMap.bmHeight = pConvertImage->sizeimg[height];
 
    BitMap.bmPlanes = 1;
 
    BitMap.bmBitsPixel = bitsPerPexel;
 
    BitMap.bmWidthBytes = (bitsPerPexel/8) * pConvertImage->sizeimg[width];
 
    BitMap.bmBits = &masspixel24bits[0][0];    
    
    bmp.CreateBitmapIndirect(&BitMap);    (Возвращает единицу)
 
    pixelimg.SetBitmap(bmp);   (Возвращает NULL)

Подскажите пожалуйста в чем мб ошибка??

Уже третий день с этим выводом мучаюсь..

Спасибо!
0
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
18.07.2011, 09:16
Ответы с готовыми решениями:

Именение цвета CStatic
Добрый день! Стоит задача изменять цвет фона и текста в CStatic, у меня в диалоге их куча, к...

MFC Цвет текста CStatic
Как изменить цвет текста CStatic созданного в диалоге ресурсов?

Как из CStatic сделать контрол?
Как из CStatic сделать контрол, который бы реагировал на нажатия мышки MUp,MDown,Click. Помогите...

Неправильное отображение надписей в CStatic
Подозреваю, что тема явно не новая..но что-пто по поиску ничего не нашлось - как, где настроить,...

12
Заблокирован
Автор FAQ
18.07.2011, 09:21 2
Думаю перед тем как писать SetBitmap нужно произвести преобразование к классу CBitmap, ведь судя из кода bmp вообще не инициализирована!
Вот так попробуй
C++
1
bmp = (CBitmap)BitMap;
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 09:33  [ТС] 3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Думаю перед тем как писать SetBitmap нужно произвести преобразование к классу CBitmap, ведь судя из кода bmp вообще не инициализирована!
Вот так попробуй
C++
1
bmp = (CBitmap)BitMap;
попробывал. Пишет:

error C2440: 'type cast' : cannot convert from 'BITMAP' to 'CBitmap'

Добавлено через 53 секунды
-=ЮрА=-,

Мб Вы знаете иной способ, отличный от моего, вывода картинки в CStatic, если имеется массив пикселей?
Буду весьма благодарен!
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
18.07.2011, 10:23 4
Цитата Сообщение от metoflex Посмотреть сообщение
bmp.CreateBitmapIndirect(&BitMap); (Возвращает единицу)
Ненулевое если успешно, иначе 0.
значит все правильно отрабатывает
Цитата Сообщение от metoflex Посмотреть сообщение
pixelimg.SetBitmap(bmp); (Возвращает NULL)
во первых здесь наверно указатель должен быть
а во вторых
что говорит MSDN
Associates a new bitmap with the static control.


HBITMAP SetBitmap(
HBITMAP hBitmap
);


Parameters
hBitmap
Handle of the bitmap to be drawn in the static control.

Return Value
The handle of the bitmap previously associated with the static control, or NULL if no bitmap was associated with the static control.

Remarks
The bitmap will be automatically drawn in the static control. By default, it will be drawn in the upper-left corner and the static control will be resized to the size of the bitmap.

You can use various window and static control styles, including the following:

SS_BITMAP Use this style always for bitmaps.

SS_CENTERIMAGE Use to center in the static control. If the image is larger than the static control, it will be clipped. If it is smaller than the static control, the empty space around the image will be filled by the color of the pixel in the upper left corner of the bitmap.

Example
Visual C++ Copy Code
CStatic myStatic;

// Create a child bitmap static control.
myStatic.Create(_T("my static"),
WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(10,10,150,50),
pParentWnd);

// If no bitmap is defined for the static control, define the bitmap
// to the system close bitmap.
if (myStatic.GetBitmap() == NULL)
myStatic.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));

парметр то не тот

Добавлено через 3 минуты
Цитата Сообщение от metoflex Посмотреть сообщение
pixelimg
кто такой???

Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ведь судя из кода bmp вообще не инициализирована!
Дядя Юра ты не прав...

Цитата Сообщение от metoflex Посмотреть сообщение
CBitmap bmp;
Цитата Сообщение от metoflex Посмотреть сообщение
bmp.CreateBitmapIndirect(&BitMap); (Возвращает единицу)
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 10:30  [ТС] 5
Цитата Сообщение от ValeryS Посмотреть сообщение
Ненулевое если успешно, иначе 0.
значит все правильно отрабатывает

во первых здесь наверно указатель должен быть
а во вторых
что говорит MSDN

парметр то не тот

Добавлено через 3 минуты

кто такой???

Добавлено через 2 минуты

Дядя Юра ты не прав...
Подскажи пожалуйста как мне исправить код, чтобы картика нарисовалась? (Пробовал через CImage методом Create, на сколько я понимал - создавал виртуальную картинку, точнее некоторую размеченную область, а потом забивал ее пикселами, через SetPixel(), затем CStatic::SetBitMap()... но все тщетно..)

Я способов 30 уже перепробывал за все выходные... около 25 часов за 2 дня на это уже грохнул. буду весьма благодарен!

P.S. pixelimg - Это переменная CStatic (Control).
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
18.07.2011, 10:45 6
Цитата Сообщение от ValeryS Посмотреть сообщение
pixelimg
кто такой???
я ведь не зря спросил
какой класс?
кто родитель?
как создаешь?(есть ли стиль SS_BITMAP?)
какой ID (если -1 то скорее всего не сработает)

2 попробуй пример из MSDN если не сработает значит дело в pixelimg
если сработает то в твоей картинке
3
Цитата Сообщение от ValeryS Посмотреть сообщение
параметр то не тот
приведение типов
C++
1
2
3
HBITMAP hBmp=(HBITMAP)bmp; // посмотри какой хандлер вернется 0 ошибка не 0 все в порядке
 
pixelimg.SetBitmap(hBmp);
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 10:51  [ТС] 7
Цитата Сообщение от ValeryS Посмотреть сообщение
я ведь не зря спросил
какой класс?
кто родитель?
как создаешь?
какой ID (если -1 то скорее всего не сработает)

2 попробуй пример из MSDN если не сработает значит дело в pixelimg
если сработает то в твоей картинке
3

приведение типов
C++
1
2
3
HBITMAP hBmp=(HBITMAP)bmp; // посмотри какой хандлер вернется 0 ошибка не 0 все в порядке
 
pixelimg.SetBitmap(hBmp);
Я же вроде написал про pixelimg:

P.S. pixelimg - Это переменная CStatic (Control).


Хандлер при всех мною испробованных способах был ноль.

Добавлено через 2 минуты
Был еще такой вариант:

C++
1
2
3
4
5
6
 CBitmap* pBitmap;
              CStatic pixelimg;                   //переменная picture control
    pBitmap = new CBitmap;
 
    pBitmap->SetBitmapBits(10000, pConvertImage->pixelmass);//CreateBitmap(100,100,16,16,pConvertImage->pixelmass);
    pixelimg.SetBitmap((HBITMAP)pBitmap);
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
18.07.2011, 10:53 8
Цитата Сообщение от metoflex Посмотреть сообщение
P.S. pixelimg - Это переменная CStatic (Control).
еще раз

Цитата Сообщение от ValeryS Посмотреть сообщение
как создаешь?(есть ли стиль SS_BITMAP?)
какой ID (если -1 то скорее всего не сработает)
код давай
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 10:58  [ТС] 9
Цитата Сообщение от ValeryS Посмотреть сообщение
еще раз


код давай


CStatic pixelimg;

#define IDC_IMG_PIXEL 1021

DDX_Control(pDX, IDC_IMG_PIXEL, pixelimg);

Это всё, что касается pixelimg и создания контрола/переменной, привязанной к нему.
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
18.07.2011, 11:01 10
т.е создаешь в ресурсах
стиль SS_BITMAP выставлен???
дай кусок файла ресурсов про свой статик
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 11:05  [ТС] 11
Цитата Сообщение от ValeryS Посмотреть сообщение
т.е создаешь в ресурсах
стиль SS_BITMAP выставлен???
дай кусок файла ресурсов про свой статик
#define IDC_IMG_PIXEL 1021

(это из resourse.h)

тип (type) изменил, сразу после добавления в сам диалог, с Frame на BitMap.
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
18.07.2011, 11:08 12
попробуй так
появится картинка или нет
C++
1
2
if (pixelimg.GetBitmap() == NULL)
 pixelimg.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));
Добавлено через 3 минуты
я имел ввиду файл xxxxx.rc
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 11:34  [ТС] 13
Цитата Сообщение от ValeryS Посмотреть сообщение
попробуй так
появится картинка или нет
C++
1
2
if (pixelimg.GetBitmap() == NULL)
 pixelimg.SetBitmap(::LoadBitmap(NULL, MAKEINTRESOURCE(OBM_CLOSE)));
Добавлено через 3 минуты
я имел ввиду файл xxxxx.rc
>> MAKEINTRESOURCE(OBM_CLOSE) - это на сколько, я пон7имаю - загрузка из ресурсов картинки??

У меня в ресурсах... один мой диалог.

Добавлено через 22 минуты
Задачу решил!

Вечером напишу решение!
0
18.07.2011, 11:34
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
18.07.2011, 11:34
Помогаю со студенческими работами здесь

Как изменить цвет текста в CStatic?
Есть компонент IDC_STATIC1, которому соответствует переменная m_IDC_STATIC1 типа CStatic. Как...

MFC Программно включить Border у CStatic
Делаю так: Image1.ModifyStyle(0,WS_BORDER,0); Image1 типа CStatic Ничего не происходит....

mfc. dialog-based application. CStatic, CButton
хочу понять логику поведения этих объектов. в диалоговом приложении создаем два класса: один...

MFC использование CStatic для показа изображений
В проекте на MFC на форме использую CStatic для показа изображений. Обнаружил, что CStatic...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru