ScrollBox里的Image大小??

galoit 2006-09-19 01:58:29
我在一个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;
...全文
386 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahjoe 2006-09-27
  • 打赏
  • 举报
回复
需要重新绘图.
zzwu 2006-09-27
  • 打赏
  • 举报
回复
我以前用的办法也是把image的尺寸设计得足够大,方法简单,且证明能行.
不过其他人建议的办法我想信也可以,或许更合理.
BlueDeepOcean 2006-09-25
  • 打赏
  • 举报
回复
那是由于拟采用Canvas.Draw方法画出来的图形图像只是逻辑画到了客户区间(ClientRect),而不是像真实的图像加载那样无力存在。因此,在移动ScrollBox的两个滚动条的时候,需要相应的处理Repaint或Refresh步骤,这样便可以避免那种情况了。
litangel 2006-09-19
  • 打赏
  • 举报
回复
///奇怪的是当拉大ScrollBox时,虽然Image.Width也跟着改变,但拉大部份并未显示出来,不知为什么?

什么时候拉大?如果是运行的时候拉大,虽然Image的width会改变,但是里面图片的宽度并没有改度。你试试加上

Image.Picture.Graphic.Width := ScrollBox.ClientWidth;
Image.Picture.Graphic.Height := ScrollBox.ClientHeight;
程序x人生 2006-09-19
  • 打赏
  • 举报
回复
在设计阶段把imag的width设的足够大就行

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧