Форум программистов, компьютерный форум CyberForum.ru

Получение цветов GetBitmapBits() - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перестановка элементов квадратной вещественной матрицы http://www.cyberforum.ru/cpp-beginners/thread1131607.html
Здравствуйте. Задача такая: Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине - в позиции (2,2), следующий по величине - в позиции (3,3) и т.д., заполнив таким образом всю главную диагональ. Найти номер первой из строк, не содержащих ни одного положительного элемента. Мой код: ...
C++ Блоки подряд идущих четных элементов списка заменить одним элементом, равным сумме этих четных Надо срочно написать вот такую функцию: Если в списке идут подряд несколько четных элементов, то блоки подряд идущих четных заменить одним элементом, равным сумме этих четных. Вот структура typedef struct SNum{ int num; /* поле для числа */ SNum * next; /* дополнительное поле-указатель, http://www.cyberforum.ru/cpp-beginners/thread1131605.html
C++ Вычислить произведение элементов целочисленного массива, находящихся между минимальным и максимальным элементами
Помогите написать программу Вычислить произведение элементов целочисленного массива, находящихся между минимальным и максимальным элементами. Определить номера максимального и минимального элементов. Создать функции для определения номеров максималь- ного и минимального элементов.
C++ Если введена строка, вывести предупреждение
if(введена любая строка){ cout << "Символы вводить нельзя"; } else{ cout << "Все нормально, продолжаем."; } Нужно если введена любая строка, кроме цифр, выводит ошибку. То есть пользователь может вводить только цифры.
C++ Найти в строках максимальную серию последовательности одинаковых элементов с минимальной длиной http://www.cyberforum.ru/cpp-beginners/thread1131589.html
Как найти в строках максимальную серию последовательности одинаковых элементов с минимальной длиной?
C++ Перевернуть массив Люди! Помогите пожалуйста с программой. Дан массив размерности n. Перевернуть массив: a(n)=a(0), a(n-1)=a(1) и т.д. Напишите поподробнее. Огромное спасибо. подробнее

Показать сообщение отдельно
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
29.03.2014, 23:58  [ТС]     Получение цветов GetBitmapBits()
Самому не вериться но я это сделал, получаем иконку по заданному пути и извлекаем пиксели:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    SHFILEINFO fileInfo;
        LPCWSTR path = L"Ваш путь...";
    SHGetFileInfo(path, 0, &fileInfo, sizeof(SHFILEINFO), SHGFI_ICON);
 
    ICONINFO iconInfo;
    GetIconInfo(fileInfo.hIcon, &iconInfo);
 
    HDC hdcSource = GetDC(windowHandle); 
    HBITMAP hSource = iconInfo.hbmColor;
 
    BITMAPINFO MyBMInfo = { 0 };
    MyBMInfo.bmiHeader.biSize = sizeof(MyBMInfo.bmiHeader);
 
    if (0 == GetDIBits(hdcSource, hSource, 0, 0, NULL, &MyBMInfo, DIB_RGB_COLORS))
    {
        
    }
 
    BYTE* lpPixels = new BYTE[MyBMInfo.bmiHeader.biSizeImage];
 
    MyBMInfo.bmiHeader.biBitCount = 32;
    MyBMInfo.bmiHeader.biCompression = BI_RGB;  // no compression -> easier to use
    
    MyBMInfo.bmiHeader.biHeight = abs(MyBMInfo.bmiHeader.biHeight);
 
    if (0 == GetDIBits(hdcSource, hSource, 0, MyBMInfo.bmiHeader.biHeight, lpPixels, &MyBMInfo, DIB_RGB_COLORS))
    {
 
    }
 
    std::vector<hgeColorRGB*> matrix;
    int MATRIX_WIDTH;
    int MATRIX_HEIGHT;
 
    MATRIX_WIDTH = MyBMInfo.bmiHeader.biWidth;
    MATRIX_HEIGHT = MyBMInfo.bmiHeader.biHeight;
    matrix.resize(MATRIX_HEIGHT*MATRIX_WIDTH);
    for (int i = 0; i < MATRIX_HEIGHT*MATRIX_WIDTH; i++) matrix[i] = NULL;
 
    float r;
    float b;
    float g;
    float a;
    int l = MATRIX_HEIGHT*MATRIX_WIDTH * 4;
    int p = MATRIX_HEIGHT*MATRIX_WIDTH-1;
    //int p = 0;
    for (int i = 0; i < l; i += 4)
    {
        int n = i;
        g = (float)lpPixels[n] / (float)255;
        b = (float)lpPixels[n + 1] / (float)255;
        r = (float)lpPixels[n + 2] / (float)255;
        a = (float)lpPixels[n + 3] / (float)255;
 
        matrix[p] = new hgeColorRGB(r, b, g, a);
        p--;
    }
 
Текущее время: 04:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru