попиксельное изменение TBitmap
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, скажем, то изменения фиксируются. Может быть, кто-нибудь знает, в чем причина такого поведения?
Цитата:
Originally posted by waterman
bmp.Canvas.Pixels[x, y] := TColor(SrcCol + 1);// !!!
bmp.Canvas.Pixels[x, y] := TColor(SrcCol + 1);// !!!
Палитра?
Цитата:
Originally posted by smartsoft
Палитра?
Палитра?
High Color. Вообще-то в true color данный пример работает, как надо. Как бы обобщить подобного рода случаи на все палитры?..
Цитата:
Originally posted by waterman
Как бы обобщить подобного рода случаи на все палитры?..
Как бы обобщить подобного рода случаи на все палитры?..
Использовать RGB-палитру, т. е. фактически 24-битную. Следовательно, преобразовывать цвет через ColorToRGB, и потом менять каждую компоненту отдельно. Кстати, наверное, можно будет выяснить, на сколько надо изменить каждый компонент цвета, чтобы изменение было заметно в данной палитре.