ScrollBox里的Image大小??
我在一个ScrollBox里放置了一个Image,用Image.canvas.draw的方法绘制了很多小图片。Image的Align设为alNone,Image的大小根据ScrollBox大小的改变而做适当改变。
奇怪的是当拉大ScrollBox时,虽然Image.Width也跟着改变,但拉大部份并未显示出来,不知为什么?
源码如下(m_bmp_Src为TBitma类型,ImgContainer即上文说的Image控件):
procedure TMainForm.ShowSourceImage;
var
xSrc: Integer;
xDest, yDest: Integer;
tmp_bmp: TBitmap;
begin
if not Assigned( m_bmp_Src ) then Exit;
xSrc := 0;
xDest := 0;
yDest := 0;
tmp_bmp := TBitmap.Create;
with tmp_bmp do
begin
Width := m_iTileWidth;
Height := m_iTileHeight;
Transparent := true;
TransparentColor := clFuchsia; //透明色(255,0,255)
end;
with ImgContainer do
begin
Left := 0;
Top := 0;
Width := ScrollBox.ClientWidth;
Height := m_iTileHeight; //暂定为一个title的高度,更新后设为实际高度
Canvas.FillRect( ClientRect ); //刷新
end;
while xSrc < m_bmp_Src.Width do
begin
tmp_bmp.canvas.Copyrect( Rect( 0, 0, m_iTileWidth, m_iTileHeight ),
m_bmp_Src.Canvas,
Rect( xSrc, 0, xSrc + m_iTileWidth, m_iTileHeight ) );
ImgContainer.canvas.draw( xDest, yDest, tmp_bmp );
Inc( xSrc, m_iTileWidth );
Inc( xDest, m_iTileWidth + 1 );
if xDest + m_iTileWidth > ImgContainer.ClientWidth then
begin
xDest := 0;
Inc( yDest, m_iTileHeight + 1 );
end;
end;
tmp_bmp.free;
end;