Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

попиксельное изменение TBitmap

463
09 марта 2004 года
waterman
178 / / 17.01.2003
Всем привет. У меня такая проблема. Меняю bitmap через свойтство его канвы Pixels.

var
SrcCol: TColor;
bmp: TBitmap;
x, y: integer;
begin
bmp := TBitmap.Create;
bmp.assign(SrcPic.Picture.Bitmap);
for BitNum := 0 to ... do
begin
SrcCol := bmp.Canvas.Pixels[x, y];

bmp.Canvas.Pixels[x, y] := TColor(SrcCol + 1);// !!!
end;

DestPic.Picture.Bitmap.assign(bmp);
bmp.free;
end;

Так вот здесь пиксел с координатами (x, y) не меняет свой цвет. Просто остается таким же, как и был. Но если изменить значение не на 1, а на 8, скажем, то изменения фиксируются. Может быть, кто-нибудь знает, в чем причина такого поведения?
10
09 марта 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by waterman
bmp.Canvas.Pixels[x, y] := TColor(SrcCol + 1);// !!!


Палитра?

463
09 марта 2004 года
waterman
178 / / 17.01.2003
Цитата:
Originally posted by smartsoft

Палитра?



High Color. Вообще-то в true color данный пример работает, как надо. Как бы обобщить подобного рода случаи на все палитры?..

10
09 марта 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by waterman
Как бы обобщить подобного рода случаи на все палитры?..


Использовать RGB-палитру, т. е. фактически 24-битную. Следовательно, преобразовывать цвет через ColorToRGB, и потом менять каждую компоненту отдельно. Кстати, наверное, можно будет выяснить, на сколько надо изменить каждый компонент цвета, чтобы изменение было заметно в данной палитре.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог