C++: что самый простой путь состоит в том, чтобы считать и записать файлам BMP с помощью C++ в Windows?

Вот довольно быстрое и грязное решение с использованием только CSS.

*[data-tooltip] {
  text-decoration: underline dashed;
  position: relative;
}

*[data-tooltip]:hover:before {
  background: #333;
  border-radius: 4px;
  color: #ccc;
  content: attr(data-tooltip);
  padding: 2px 4px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 4px);
}

*[data-tooltip]:hover:after {
  background: #333;
  content: '';
  width: 6px;
  height: 6px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 1px);
  left: 8px;
  transform: rotate(45deg);
}
foo <span data-tooltip="This field represents what foo needs">bar</span> baz

Если ваш текст всплывающей подсказки известен, вы даже можете избавиться от атрибута data-tooltip, и запекать его в свойство content в CSS:

.tooltip {
  text-decoration: underline dashed;
  position: relative;
}

.tooltip:hover:before {
  background: #333;
  border-radius: 4px;
  color: #ccc;
  padding: 2px 4px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 4px);
}

.tooltip:hover:after {
  background: #333;
  content: '';
  width: 6px;
  height: 6px;
  position: absolute;
  white-space: nowrap;
  top: calc(100% + 1px);
  left: 8px;
  transform: rotate(45deg);
}

.tooltip.tt-bar:hover:before {
  content: 'This field represents what foo needs';
}
foo <span class="field tooltip tt-bar">bar</span> baz

9
задан Community 23 May 2017 в 12:32
поделиться

5 ответов

Когда разработка только для Windows I обычно просто использует класс CImage ATL

7
ответ дан 4 December 2019 в 08:54
поделиться

Класс CBitmap делает ввод-вывод BMP.

2
ответ дан 4 December 2019 в 08:54
поделиться

Файл BMP состоит из 3 структур. BITMAPFILEHEADER, сопровождаемый BITMAPINFO, сопровождаемым массивом байтов.

Абсолютный самый простой способ загрузить файл BMP с помощью Win32 состоит в том, чтобы назвать CreateFile, GetFileSize, ReadFile и CloseHandle, чтобы загрузить изображение файла в память, и затем просто бросить указатель на буфер к BITMAPFILEHEADER и пойти оттуда.

Я лежу, более простой путь состоит в том, чтобы назвать LoadImage. Проверка передать флаг LR_DIBSECTION, чтобы гарантировать, что GDI не преобразовывает загруженное изображение в любую битовую глубину, к которой настроен главный дисплей. Это имеет преимущество получения Вас HBITMAP, который можно выбрать в DC и поэтому потянуть на всем протяжении использования GDI.

Для сохранения его однако нет никакого ярлыка. Необходимо подготовить BITMAPFILEHEADER, выписать его, заполнить структуру BITMAPINFO, выписать это и затем данные фактического пикселя.

5
ответ дан 4 December 2019 в 08:54
поделиться
#include <windows.h>

LoadImage

2
ответ дан 4 December 2019 в 08:54
поделиться

Я не использовал Magick ++, но Windows имеет библиотеку, названную Windows Imaging Component, который, вероятно, удовлетворил бы Вашим потребностям.

1
ответ дан 4 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: