C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Редактирование рисунков, переворот и палитра
Konstantine
Отправлено: 23.01.2006, 11:11


Мастер участка

Группа: Модератор
Сообщений: 545



для схем нужно сделать переворачивание рисунков (небольшие около 30х30) на 90 градусов, а также изменение цвета и заливки (например — есть кружок, нужно изменять цвет линии и цвет его заливки...) рисунки сложные — поэтому рисовать их в граф.редакторе...

пробовал через изменение палитры индексированного рисунка — так оно — собака — меняет лишь на схожие цвета (зелёный — на тёмно-зелёный а на крассный не хочет)....
gvg
Отправлено: 24.01.2006, 08:55


Машинист паровоза

Группа: Участник
Сообщений: 222



Приготовить нужное количество рисунков под нужным углом (если это пиктограммы с заранее известным рисунком) с нужной расцветкой. Многие графические редакторы позволяют повороты. В зависимости от ситуации отображать нужный. Это проще чем делать преобразования рисунка и менее накладно.
Konstantine
Отправлено: 25.01.2006, 10:17


Мастер участка

Группа: Модератор
Сообщений: 545



сделал — изучил формат GIF и сделал так:
- загоняю рисунок в MemoryStream
- редактирую файл, изменяя цвета палитры
- загружаю рисунок обратно
CODE
void ChangeImagePalette(TImage *Image,UINT Line,UINT Fon,UINT Fill)
{
 TMemoryStream *st=new TMemoryStream;
 Image->Picture->Graphic->SaveToStream(st);
 st->Position=0x0d;
 st->Write(&Line,3);
 st->Write(&Fon,3);
 st->Write(&Fill,3);
 st->Position=0;
 Image->Picture->Graphic->LoadFromStream(st);
 delete st;
}
это для GIF, а для BMP — st->Position=0x36; и во Write-ах второй параметр=4

а с поворотами — наверно проще по 4 изобращения на рисунок хранить...

Вернуться в Вопросы программирования в C++Builder