powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / в Builder-е палитра не меняется
3 сообщений из 3, страница 1 из 1
в Builder-е палитра не меняется
    #33082832
В Builder-е на форме у меня есть панель,
на панеле я рисую график. Сначала я рисую прямоугольник, заданного цвета.
но цвет у меня получается только черный или белый, если я выбираю зеленый он его делает в виде смеси черного и белого.


Попытался перегрузить палитру ну ни чего не получилось:
(одним цветом для начала)

// Определяем идентификатор панели
hdc=GetDC(Form1->Panel2->Handle);

// Создаем палитру
LPLOGPALETTE pLogPal;
HPALETTE hPal;

// Выделяем память для палитры
pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) );
pLogPal->palVersion = 0x300;
pLogPal->palNumEntries = 256;
for(int ii=0;ii<256;ii++)
{
pLogPal->palPalEntry[ii].peRed = 0;
pLogPal->palPalEntry[ii].peGreen = 255;
pLogPal->palPalEntry[ii].peBlue = 128;
pLogPal->palPalEntry[ii].peFlags = 0;
}
// Создаем палитру
hPal = CreatePalette(pLogPal);
// Освобождаем таблицу цветов
free( pLogPal );

// Устанавливаем палитру
SelectPalette(hdc, hPal, 0);
RealizePalette(hdc);

// Создаем контекст памяти, совместимой с панелью 2
hmdc=CreateCompatibleDC(hdc);
hbr=CreateSolidBrush(PALETTEINDEX(5));
hpen=CreatePen(PS_SOLID,1,RGB(255,255,255));
SelectObject(hmdc,hpen);


При рисовании формирую изображение в контексте панели,
а потом отображаю его на панель через команду:
BitBlt(hdc,1,t,w,h,hmdc,pos1,0,SRCCOPY);


Заранее, благодарен.
...
Рейтинг: 0 / 0
в Builder-е палитра не меняется
    #33084253
aquasnake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Builder - такая штука, в которой о средствах API имеет смысл слегка подзабыть...
Для рисования графиков ведь есть замечательный компонент TChart...

А вообще, в этом месте Вы создаете палитру из 256 цветов (что делать совсем не нужно для кольорових изображений :
Код: plaintext
pLogPal->palNumEntries =  256 ;
Здесь Вы ее заполняете:
Код: plaintext
1.
2.
3.
4.
5.
6.
for(int ii= 0 ;ii< 256 ;ii++)
{
pLogPal->palPalEntry[ii].peRed =  0 ; 
pLogPal->palPalEntry[ii].peGreen =  255 ; 
pLogPal->palPalEntry[ii].peBlue =  128 ;
pLogPal->palPalEntry[ii].peFlags =  0 ;
}
весьма странно, что у Вас вообще один цвет отличается от другого...

Встречный вопрос - зачем в данном случае нужна палитра?
...
Рейтинг: 0 / 0
в Builder-е палитра не меняется
    #33085461
У меня на экран выводится черный и белый цвет,
я попробывал сделать палитру из 256 цветов зеленого цвета,
что бы хотя бы увидеть на экране зеленый цвет,
но не получилось ...
может палитру не правильно установил ...
по идеи ... не чего и не должно быть на экране ... значит не правильно ее приконектил.
На счет TChart - нужно попробывать,
мне нужно отображать на экране движущую звуковую дорожку,
через картинку ... ее сдвигая .... все дрожит на экране ...
будет ли элемент TChar дрожать ....
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / в Builder-е палитра не меняется
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]