А вообще проблема так и не решилась. При копировании из одного Bitmap в другой происходит очень сильная потеря качества, если копирование происходит не методом Assign. Вот как делаю
Код:
B1 := TBitMap.Create;
B1.PixelFormat := pf4bit;
B1.Canvas.CopyMode:=cmSrcCopy;
B1.Monochrome := false;
B1.Transparent := false;
JpegIm := TJpegImage.Create;
JpegIm.LoadFromFile('какой то файл');
B1.Assign(JpegIm);
JpegIm.Destroy;
BitMAP := TBitMap.Create;
BitMap.PixelFormat := pf4bit;
BitMap.Monochrome := false;
BitMap.Transparent := false;
BitMap.Width := B1.Width;
BitMap.Height := B1.Height;
//BitMap.Palette := B1.Palette; //хоть так
BitMap.Palette := CopyPalette(B1.Palette); //хоть так
BitMap.Canvas.CopyMode:=cmSrcCopy;
//пробовал копирование со всеми ниже перечисленными методами
//BitMap.Canvas.Draw(Round(RD.Left,RD.Top,B1);
//BitMap.Canvas.StretchDraw(RD,B1);
//BitMap.Canvas.CopyRect(RD,B1.Canvas,RS);
BitBlt(BitMap.Canvas.Handle, RD.Left, RD.Top, RD.Right, RD.Bottom, B1.Canvas.Handle, 0, 0, SRCCOPY);
B1.FreeImage;
B1.Destroy;
Admin: Пользуемся тегами!
при этом если сохранить в файл B1 он будет отличного качества, а BitMap уже плохого. Очень сильная потеря цветности и качества. Проблема как то решается если у BitMap.PixelFormat задать pf16bit и выше, но при этом изображение раздувается по размеру и вывод на канвас (перерисовка) тормозит. А иногда (при больших размерах исходного изображения) приложение вываливается "Недостаточно памяти...".
Кто соображает в графике, помогите пожалуйста. Даже не знаю в какую сторону искать.
