![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
И ещё раз FastDIB :) [D7, WinXP]
PenguinX © (2004-06-22 12:37:00)Привет All!
Почему при выполнении следующего кода вылетает AV и CPU Window c указателем в строчке push esi(я в асме не шарю):
----------
....
procedure TForm1.BitBtn1Click(Sender: TObject);
var b1, b2: TFastDIB;
X, Y: integer;
C: TFColor;
CR: COLORREF;
begin
b1 := TFastDIB.Create;
b2 := TFastDIB.Create;
b1.SetSize(Image1.Width, Image1.Height, 24);
for X := 0 to Image1.Width do
for Y := 0 to Image1.Height do begin
C.b := GetBValue(GetPixel(Image1.Canvas.Handle, X, Y));
C.r := GetrValue(GetPixel(Image1.Canvas.Handle, X, Y));
C.g := GetgValue(GetPixel(Image1.Canvas.Handle, X, Y));
b1.SetPixel(Y, X, c);
end;
Rotate90CW(b1, b2);
for X := 0 to Image1.Width do
for Y := 0 to Image1.Height do begin
C := b2.GetPixel(Y, X);
SetPixel(Image2.Canvas.Handle, X, Y, RGB(C.r, C.g, C.b));
end;
end;
....
--------
Если убрать строчку SetSize b1.SetSize(Image1.Width, Image1.Height, 24), то вылетает другая AV с другим адресом и в модуле FastDIB в теле функции GetPixel высвечивается строка d:=Pixels32[y,x].i. Помогите plz избежать ошибок и написать правильный код.
PenguinX (2004-06-22 14:47:00) [1]2MBo
Огромное Вам спасибо!
MBo (2004-06-22 12:39:00) [2]for X := 0 to Image1.Width -1
и для высоты так же