Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод картинок лентой 
V
    Опции темы
metoflex
Дата 13.7.2011, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 18.4.2010

Репутация: нет
Всего: нет



Приветствую!

Нужно реализовать идею вида:

Есть набор картинок (только *.bmp & *.jpg). Могу выделять от одной до 20 картинок и выводить нужно их в ленту (что-то на подобие как в проводнике большими значками в винде картинки расположены должны быть, их потом пролистываешь ползунком). В ширину должна быть одна картинка, а в высоту соответственно 20, но на экране видимые должны быть 3 штуки, остальные смотрим прокручивая ползунок. Мб у кого-то есть подобного рода наработки или мб мысли на этот счет конкретные есть. Буду рад любой помощи.

Спасибо!
PM MAIL   Вверх
RastaDja
Дата 13.7.2011, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: нет
Всего: 5



могу посоветовать перейти на WPF .Net, там такое можно сделать относительно просто, и быстро. Ну или создать свой ActiveX.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
Earnest
Дата 13.7.2011, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Если картинки имеют сравнительно небольшой размер (или их можно ужимать до какого надо размера), можно воспользоваться ListView. Не знаю, какое там ограничение на размер изображения для элемента, но если тебе нужно что-то вроде режима просмотра thumbnails эксплорера, то это как раз оно. Режим "большие значки" (не помню, как стиль правильно называется). Чтобы было скоко надо в высоту и ширину - установить размеры ListView.
Все, что остается сделать - загрузить картинки и привести их к более-менее единому размеру (чтобы в ImageList засунуть). Впрочем, можно и динамически (т.е. прорисовку икон взять на себя).


--------------------
...
PM   Вверх
metoflex
Дата 16.7.2011, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 18.4.2010

Репутация: нет
Всего: нет



Спасибо большое за совет!

Структура программы немного изменилась. Теперь мне нужно из набора пикселей, хранящихся в массиве сделать отрисовку изображения или в самом диалоге или же в любом ctrl;

Юзал и SetPixel(); и SetBitmapBits();

Пока дошел до такого:

Код

    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);


но воз и ныне там, так никакого абсолютно отображения я и не добился..

P.S. pConvertImage->pixelmass - это собственно сам массив (unsigned short**);
PM MAIL   Вверх
Earnest
Дата 18.7.2011, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



По поводу, формата битмапа и его вывода на экран было много тем. В этом разделе и в ВинАПИ. Поищи по форуму.


--------------------
...
PM   Вверх
metoflex
Дата 18.7.2011, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 18.4.2010

Репутация: нет
Всего: нет



Earnest,  У меня только на Вас и была вся надежда в выходные. Я около 25 часаов грохнул на это за 2 дня... способов 30 уже перепробывал... всё тщетно, как был CStatic пустой, так и остался. С форума все что можно было - все перепробывал..

Если поможете, буду весьма благодарен.
PM MAIL   Вверх
Earnest
Дата 18.7.2011, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



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


--------------------
...
PM   Вверх
metoflex
Дата 18.7.2011, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 18.4.2010

Репутация: нет
Всего: нет



Earnest,  Вы были правы! На протяжении 2-х дней я был слеп! Нашел решение, причем которое советовали вы же:

CDC* pDC = pixelimg.GetDC();
for(int i=0; i<100; i++)
for(int j=0; j<100; j++)
int k = pDC->SetPixelV(i,j, Pixel);
pixelimg.ReleaseDC(pDC);

pixelimg (переменная CStatic)

полное решение напишу вечером. Вдруг кому-то пригодится ;)
PM MAIL   Вверх
Earnest
Дата 18.7.2011, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Хм... но вообще-то SetPixel - не самый быстрый метод, правильнее все же правильно заполнить биты битмапа.
Впрочем, если быстродействие тебя устраивает, то для начала сойдет. Но вообще имей в виду, для больших картинок будут, скорее всего, тормоза.


--------------------
...
PM   Вверх
Dem_max
Дата 18.7.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39





--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
metoflex
Дата 19.7.2011, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 18.4.2010

Репутация: нет
Всего: нет



Earnest, Да, спасибо! Я уже начитался про медленность SetPixel(). Для выполнения поставленной задачи вполне сойдет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.