![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TFastDIB и переворот изображения. [D7, WinXP]
PenguinX © (2004-06-23 14:53:00)Почему при повороте изображения по его (изображения) краям появляются чёрная линия шириной в 1-2 пиксела? Изначально изображение не имеет этих полос.
Sapersky (2004-06-28 20:55:00) [1]Если не считать отсутствия уничтожения FastDIB'ов (а также случаев, когда битмап не 24 bpp, или вообще не битмап), то всё правильно.
А линия - это Rotate так работает, видимо. Там используется универсальная процедура для поворота на любой угол и масштабирования Transform, ну и получаются ошибки округления. К тому же это неоптимально. В общем, нужно специализированную писать.
Насчёт очистить канву - не понял. Изображение (пиксели) замазать или картинку из Image убрать?
PenguinX (2004-06-26 14:42:00) [2]Так что в моём коде неправильно?
PenguinX (2004-06-25 08:10:00) [3]procedure Form1.Button1Click(Sender: TObject);
var b1, b2: TFastDIB;
begin
b1 := TFastDIB.Create;
b2 := TFastDIB.Create;
b1.SetInterface(Image1.Picture.Bitmap.ScanLine[Image1.Picture.Bitmap.Height - 1], Image1.Picture.Bitmap.Width, Image1.Picture.Bitmap.Height, 24, 0, 0, 0);
Rotate90CW(b1, b2);
Image2.Canvas.Handle := b2.hDC;
Image2.Refresh;
end;
И ещё: как после этого БЫСТРО очистить канву? Image1.Canvas.Refresh - не помогает. Помогло только варвaрское Image1.Hide; Image1.Show;
DimKa (2004-06-24 17:41:00) [4]Я - не-а
DimKa (2004-06-24 17:41:00) [5]Напиши код, может разберемся...
PenguinX (2004-06-24 08:11:00) [6]Что, никто не сталкивался?