将一组按钮排列成一个矩形的算法怎么写?

问答知识库用户 |浏览279次
收藏|2014/05/17 21:59
如题

满意回答

2014/05/17 21:59

贴点代码参考下吧
procedure TElementManage.PaintRectangle(WCount, HCount: Integer);
var
  FLinkCount: Integer;
  FBasePoint, FNewPoint: TvgPoint;
  I: Integer;
  FDeskTopLink: TDeskTopLink;
begin
  FBasePoint := vgPoint((Screen.Width - WCount * BaseGirdSize) / 2,
    (Screen.Height - HCount * BaseGirdSize) / 2);
  IsAlignToGird := False;
  FLinkCount := (WCount + HCount - 2) * 2;
  with FLinkList.LockList do
  try
    for I := 0 to Count - 1 do
    begin
      FDeskTopLink := Items[I];
      if I < WCount then
      begin
        FNewPoint.X := FBasePoint.X + BaseGirdSize * I;
        FNewPoint.Y := FBasePoint.Y;
      end;
      if (I >= WCount) and (I < WCount + HCount - 1) then
      begin
        FNewPoint.X := FBasePoint.X + BaseGirdSize * (WCount - 1);
        FNewPoint.Y := FBasePoint.Y + BaseGirdSize * (I - WCount + 1);
      end;
      if (I >= WCount + HCount - 1) and (I < WCount * 2 + HCount - 3) then
      begin
        FNewPoint.X := FBasePoint.X + BaseGirdSize * (WCount * 2 + HCount - 3 - I);
        FNewPoint.Y := FBasePoint.Y + BaseGirdSize * (HCount - 1);
      end;
      if (I >= WCount * 2 + HCount - 3) and (I < FLinkCount) then
      begin
        FNewPoint.X := FBasePoint.X;
        FNewPoint.Y := FBasePoint.Y + BaseGirdSize * (FLinkCount - I);
      end;
      if I < FLinkCount then
        FDeskTopLink.Position.Point := FNewPoint;
    end;
  finally
    FLinkList.UnlockList;
  end;
end;

热心网友

其他回答(0)
0人关注该问题
待解决问题



+1
 加载中...