Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • WinAPI. Изображения

    WinAPI Button ImageВ этом примере будет показан минимум действий для открытия изображения в WinAPI, чтоб не загружать код разными стандартными процедурами (как освобождение контекста устройств и другое). На даном этапе достаточно быть ознакомленным с функциями которые участвуют в выводе изображений.
    Кнопка - это обычное окно. Открытие изображение в окне и на кнопке требует одинаковых процедур. Первое - создание переменных типа HDC (hDC и CompatibleDC). В hDC тут же устанавливаем контекст дисплея, а в CompatibleDC сохраняем контекст устройства памяти для нужного нам устройства (в нашем случае это контекст дисплея hDC). Далее функцией LoadImage() в параметрах которой указываем тип файла, название и размеры - загружаем изображение и сохраняем его дескриптор в переменную HANDLE HndBitmap; Тут стоит также упомянуть о размерах. Желательно размер изображения сохранять таким, каким он будет выводится в окне, иначе при растягивании или сжимании появятся разные артефакты.
    Функцией GetObject() извлекается информация о графическом объекте в созданную переменную BITMAP Bitmap, она понадобится в дальнейшем для вывода изображения. Функция SelectObject() выбирает объект в указанном контексте устройства (DC). С помощью функции StretchBlt(), изображение будет равномерно растянуто/сжато в соответствующем контексте устройства.
    Данный пример кода можно размещать в любом месте откуда видно дескриптор главного окна hWnd:

    HWND left = CreateWindow("BUTTON", "", WS_CHILD|WS_VISIBLE,
    150,50,200 ,127, hWnd, (HMENU)3001, hInstance, NULL);

    img_bt(left);


    void img_bt(HWND hwnd){
    HDC hDC, CompatibleDC;
    hDC = GetDC(hwnd);
    CompatibleDC = CreateCompatibleDC(hDC);

    HANDLE HndBitmap;
    HndBitmap = LoadImage(NULL, "button.bmp", IMAGE_BITMAP, 200,127, LR_LOADFROMFILE);

    BITMAP Bitmap;


    GetObject(HndBitmap, sizeof(BITMAP), &Bitmap);

    SelectObject(CompatibleDC, HndBitmap);
    StretchBlt(hDC, 0, 0, 200, 127, CompatibleDC, 0, 0, Bitmap.bmWidth,
    Bitmap.bmHeight, SRCCOPY);
    }


    Читайте больше в категории: Программирование

    2016-07-17 16:02:31



    Другие статьи:

    STM32. Регистры портов GPIO

    Android. Введение

    Бронецький Замок. 3D реконструкція

    Maya. Insert Edge Loop Tool и Lattice

    PHP. Введение

    WEB Разработка

    Java

    Java. Интерфейсы

    Java. Графики функций

    Maya. Текстуры