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

Изменение палитры bmp изображения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно записать в файл четные числа http://www.cyberforum.ru/cpp-beginners/thread396084.html
Дано файл f компонентами которого являются натуральные числа. Получить в файле g все компоненты файла f: что есть четными числами
C++ Дан текстовый файл. Вывести на экран количество предложений в нём и количество слов в каждом предложении. Помогите решить задачку пожалуйста. Дан текстовый файл. Вывести на экран количество предложений в нём и количество слов в каждом предложении. Добавлено через 2 часа 0 минут ап ап ап Добавлено через 8 часов 43 минуты ап ап ап http://www.cyberforum.ru/cpp-beginners/thread396082.html
Как посчитать сумму и разность чисел в одномерном массиве? C++
Как написать функцию??обьясните плз
C++ Посоветуйте пару книг
в инете полно всяких книг по Си, незнаю что выбрать, подскажите пожалуйста книжку для начинающего по Си без воды от самого простого
C++ Посчитать сумму для заданного n http://www.cyberforum.ru/cpp-beginners/thread396072.html
Посчитать сумму для заданного натурального n
C++ Проверка слов в словаре Здравствуйте, требуется написать программу которая будет проверять введённое слово на наличие его в словаре(создаётся текстовый документ), и если слово введено с более чем одной ошибкой, то указать на какое слово из словаря похоже введённое слово. Собственно возникла проблема, если первое слово в словаре оказывается больше того , которое ввели, то выходит за границы диапазона, тоже самое если... подробнее

Показать сообщение отдельно
DarkAnima
Сообщений: n/a
30.11.2011, 23:11     Изменение палитры bmp изображения
Ребят, помогите пожалуйста. У меня стоит задача изменить палитру в bmp изображении чтоб первые 118 цветов были белыми, а другие 118 черными. Другими словами палитра должна иметь вид:
R G B
1 0 0 0
2 0 0 0
3 0 0 0
..
118 0 0 0
119 255 255 255
120 255 255 255
121 255 255 255
....
218 255 255 255

реализовать надо на с++. Я нашла похожий код на делфи, но к сожалению в делфи я не шарю:

Delphi
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
var
  Palette : HPalette;
  PaletteSize : Integer;
  LogSize: Integer;
  LogPalette: PLogPalette;
begin
  Palette := Image1.Picture.Bitmap.ReleasePalette;
  if Palette=0 then exit;
  if GetObject(Palette, SizeOf(PaletteSize), @PaletteSize) = 0 then Exit;
  if PaletteSize = 0 then Exit;
  LogSize := SizeOf(TLogPalette) + (PaletteSize - 1) * SizeOf(TPaletteEntry);
  GetMem(LogPalette, 16);
  try
    with LogPalette^ do begin
      palVersion := $0300;
      palNumEntries := $0200;
      GetPaletteEntries(Palette, 0, 2, palPalEntry);
      palPalEntry[0].peRed := 0;
      palPalEntry[0].peGreen := 0;
      palPalEntry[0].peBlue := 255;
    end;
    Image1.Picture.Bitmap.Palette := CreatePalette(LogPalette^);
  finally
    FreeMem(LogPalette, LogSize);
    DeleteObject(Palette);
  end;
end;
 
Этот код изменяет черный цыет в изображении на синий. 
мои попытки перевести на с++ привели меня вот к этому коду:
 
 HPALETTE  Palette;
 int PaletteSize;
 int LogSize;
 LOGPALETTE LogPalette;
 
 Palette = Image1->Picture->Bitmap->ReleasePalette();
 LogSize = sizeof(TLogPalette) + (PaletteSize - 1) * sizeof(TPaletteEntry);
 LogPalette.palVersion=0x300;
 LogPalette.palNumEntries=0x200;
 GetPaletteEntries(Palette, 0, PaletteSize, LogPalette.palPalEntry);
 
 LogPalette.palPalEntry[0].peRed=0;
 LogPalette.palPalEntry[0].peGreen=0;
 LogPalette.palPalEntry[0].peBlue=255;
 
 Image1->Picture->Bitmap->Palette = CreatePalette(LogPalette);
 
Но в нем существуют проблемы с  LOGPALETTE LogPalette т к я не знаю как перевесли с делфи GetMem(LogPalette, 16);
Помогите пожалуйста с переводом этого кода на с++ или подскажите другой вариант смены палитры.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru