扫描线使用(x 偏移)
Scanline usage (x offset)
我正在使用 ImageEnVect(或 TImage)绘制图像。
我使用 ScanLine,但通常我的图像不会逐行加载。
这是我的图像必须加载的方式。
procedure TJP2RenderPreview.put_region(size : _Ckdu_coords; buf : array of Integer; offX, offY : Integer);
var
x, y : Integer;
width, height : Integer;
buf_pos : Integer;
RowPtr : PRGBTriple;
begin
width:= size.__property_get_x;
height:= size.__property_get_y;
buf_pos:=0;
for y := offY to offY + height - 1 do
begin
RowPtr:= formMain.imgPreview.Bitmap.ScanLine[y];
for x := offX to offX + width - 1 do
begin
// RowPtr.rgbReserved := (buf[buf_pos] div 00000);
RowPtr.rgbtRed:= ((buf[buf_pos] mod 00000) div 000);
RowPtr.rgbtGreen:= ((buf[buf_pos] mod 000) div 0);
RowPtr.rgbtBlue:= (buf[buf_pos] mod 0);
Inc(RowPtr);
Inc(buf_pos);
end;
end;
formMain.imgPreview.Refresh;
formMain.imgPreview.Update;
end;
当第三部分到来时,我想在 OFFSETX 值上开始扫描线的 X 坐标。但它从 0 开始并结束。
我编辑了我的代码部分。所有颜色值(如(1239223))都部分地出现在数组中。
我给你偏移量和 width/height 值 :
第一次调用:OffX:0,OffY:0,宽度:100;身高:50;
第二个:OffX:0,OffY:50,宽度:100;身高:50;
第三:OffX:100,OffY:0,宽度:100;身高:50;
最后:OffX:100,OffY:50,宽度:100;身高:50;
绘制 X= 0 并且图像绘制结束,但 offsetX = 500; :
您没有在 x 循环之前正确设置 RowPtr。它总是指向扫描线的第 0 个像素。
尝试
Inc(RowPtr, OffX);
for x := 0 to width - 1...
我正在使用 ImageEnVect(或 TImage)绘制图像。 我使用 ScanLine,但通常我的图像不会逐行加载。
这是我的图像必须加载的方式。
procedure TJP2RenderPreview.put_region(size : _Ckdu_coords; buf : array of Integer; offX, offY : Integer);
var
x, y : Integer;
width, height : Integer;
buf_pos : Integer;
RowPtr : PRGBTriple;
begin
width:= size.__property_get_x;
height:= size.__property_get_y;
buf_pos:=0;
for y := offY to offY + height - 1 do
begin
RowPtr:= formMain.imgPreview.Bitmap.ScanLine[y];
for x := offX to offX + width - 1 do
begin
// RowPtr.rgbReserved := (buf[buf_pos] div 00000);
RowPtr.rgbtRed:= ((buf[buf_pos] mod 00000) div 000);
RowPtr.rgbtGreen:= ((buf[buf_pos] mod 000) div 0);
RowPtr.rgbtBlue:= (buf[buf_pos] mod 0);
Inc(RowPtr);
Inc(buf_pos);
end;
end;
formMain.imgPreview.Refresh;
formMain.imgPreview.Update;
end;
当第三部分到来时,我想在 OFFSETX 值上开始扫描线的 X 坐标。但它从 0 开始并结束。
我编辑了我的代码部分。所有颜色值(如(1239223))都部分地出现在数组中。 我给你偏移量和 width/height 值 :
第一次调用:OffX:0,OffY:0,宽度:100;身高:50; 第二个:OffX:0,OffY:50,宽度:100;身高:50; 第三:OffX:100,OffY:0,宽度:100;身高:50; 最后:OffX:100,OffY:50,宽度:100;身高:50;
绘制 X= 0 并且图像绘制结束,但 offsetX = 500; :
您没有在 x 循环之前正确设置 RowPtr。它总是指向扫描线的第 0 个像素。
尝试
Inc(RowPtr, OffX);
for x := 0 to width - 1...