Здравствуйте, Michael Chelnokov, Вы писали:
MC>Здравствуйте, ksi, Вы писали:
ksi>>br.CreateSolidBrush(PALETTERGB(r,g,b));
ksi>>получается цвет разбитый на 16 стандартных цветов, а не чистый цвет из палитры.
MC>Ааа, в этом смысле...
MC>PALETTERGB явно лажает. Это и не удивительно, учитывая что он работает безотносительно к какому-либо DC.
MC>Если Вы и так знаете индекс в палитре, то используйте PALETTEINDEX() — этот макрос переводит WORD-индекс в формат COLORREF.
MC>Если не знаете, то "обычный" RGB() должен помочь — при выборе этой кисти цвет сам будет определяться как ближайший из возможных. Причем не обязательно из системной палитры, а изо всей доступной.
MC>Главное — правильно обращаться с самой установкой палитры. Подробностей, к сожалению, не помню. Но помню точно что все работало как и описывалось. Правда все остальные окна на экране отображали кизяк (они, ессно, не обрабатывали сообщения об изменении аппаратной палитры), но зато мое окно рисовалось правильно
ksi>Спасибо за информацию, пробовал я все и PALETTEINDEX и RGB и PALETTERGB ничего не работает, смотрел исходные коды VCL из Delphi и пробовал Visual C++, делаю все по документации. Но из этого ничего не выходит, хоть монитор разбей, все равно использует только 16 цветов даже не 20 (с 4-я расширенными цветами). Хотя BMP файлы с 256 цветами загружает нормально. Склоняюсь к тому что просто какая-то системная проблема на компьютере именно при работе с этими макросами.