SultanOFF
22.02.2010, 15:54
Здравствуйте. Пытаюсь покрыть image сеткой, делаю это так
procedure TForm4.DrawVisor(_B_in: TBitmap; rect: trect);
const
MaxPixelCountA = MaxInt div SizeOf(TRGBQuad);
type
PRGBAArray = ^TRGBAArray;
TRGBAArray = array[0..MaxPixelCountA-1] of TRGBQuad;
var i,ii,ix,iy,CenterPointY,CenterPointX:integer;
RowOut: PRGBAArray;
begin
_B_in.Canvas.Pen.Width:=1;
_B_in.Canvas.Pen.Color:=rgb(0,20,0);
CenterPointX:=rect.Left+((rect.Right-rect.Left) div 2);
CenterPointY:=rect.Top+((rect.Bottom-rect.Top) div 2);
ix:=CenterPointX-(CenterPointX div 24)*24;
iy:=CenterPointY-(CenterPointY div 24)*24;
for i:=rect.Top to rect.Bottom-1 do begin
RowOut:=_B_in.ScanLine[i];
for ii:=rect.Left to rect.Right-1 do begin
if ((ii=(ii div 24)*24+ix))or((i=(i div 24)*24+iy)) then begin
RowOut[ii].rgbBlue:=trunc(RowOut[ii].rgbBlue*0.8);
RowOut[ii].rgbGreen:=trunc(RowOut[ii].rgbGreen*0.8);
RowOut[ii].rgbRed:=trunc(RowOut[ii].rgbRed*0.8);
end;
end;
end;
end;
Однако вылетает страшная ошибка. Причем в Вин7 ошибки не наблюдается, а в ХП присутсвует. Кто может подсказать из за чего это? Или может предложите свой способ покрытия image чем нибудь наподобии сетик?
procedure TForm4.DrawVisor(_B_in: TBitmap; rect: trect);
const
MaxPixelCountA = MaxInt div SizeOf(TRGBQuad);
type
PRGBAArray = ^TRGBAArray;
TRGBAArray = array[0..MaxPixelCountA-1] of TRGBQuad;
var i,ii,ix,iy,CenterPointY,CenterPointX:integer;
RowOut: PRGBAArray;
begin
_B_in.Canvas.Pen.Width:=1;
_B_in.Canvas.Pen.Color:=rgb(0,20,0);
CenterPointX:=rect.Left+((rect.Right-rect.Left) div 2);
CenterPointY:=rect.Top+((rect.Bottom-rect.Top) div 2);
ix:=CenterPointX-(CenterPointX div 24)*24;
iy:=CenterPointY-(CenterPointY div 24)*24;
for i:=rect.Top to rect.Bottom-1 do begin
RowOut:=_B_in.ScanLine[i];
for ii:=rect.Left to rect.Right-1 do begin
if ((ii=(ii div 24)*24+ix))or((i=(i div 24)*24+iy)) then begin
RowOut[ii].rgbBlue:=trunc(RowOut[ii].rgbBlue*0.8);
RowOut[ii].rgbGreen:=trunc(RowOut[ii].rgbGreen*0.8);
RowOut[ii].rgbRed:=trunc(RowOut[ii].rgbRed*0.8);
end;
end;
end;
end;
Однако вылетает страшная ошибка. Причем в Вин7 ошибки не наблюдается, а в ХП присутсвует. Кто может подсказать из за чего это? Или может предложите свой способ покрытия image чем нибудь наподобии сетик?