flowchart 保存成位图

将flowchart的内容输出成位图的函数

function GetFlowChartBitmap(FC: TdxFlowChart): TBitmap;
var
  H, W, NewW: Integer;
  AAlign: TAlign;
  ABorder: TBorderStyle;
  SInfo: TScrollInfo;
  R: TRect;
begin
  Result := TBitmap.Create;
  try
    H := FC.Height;
    W := FC.Width;
    AAlign := FC.Align;
    ABorder := FC.BorderStyle;
    SendMessage(FC.Parent.Handle, WM_SETREDRAW, 0, 0);
    SendMessage(FC.Handle, WM_SETREDRAW, 0, 0);
    FC.Align := alNone;
    FC.BorderStyle := bsNone;
    SInfo.cbSize := SizeOf(SInfo);
    SInfo.fMask := SIF_RANGE;
    if GetScrollInfo(FC.Handle, SB_HORZ, SInfo) then
      NewW := SInfo.nMax - SInfo.nMin + 1
    else
      NewW := 0;
    if GetScrollInfo(FC.Handle, SB_VERT, SInfo) then
      FC.ClientHeight := SInfo.nMax - SInfo.nMin + 1;
    if NewW > 0 then
      FC.ClientWidth := NewW;
    Result.Width := FC.ClientWidth ;
    Result.Height := FC.ClientHeight;
    Result.Canvas.Brush := FC.Brush;
    Result.Canvas.FillRect(FC.ClientRect);
    Result.Canvas.Lock;
    try
      FC.PaintTo(Result.Canvas.Handle, 0, 0);
    finally
      Result.Canvas.Unlock;
      FC.Width := W;
      FC.Height := H;
      FC.BorderStyle := ABorder;
      FC.Align := AAlign;
      SendMessage(FC.Parent.Handle, WM_SETREDRAW, 1, 0);
      SendMessage(FC.Handle, WM_SETREDRAW, 1, 0);
      R := FC.Parent.ClientRect;
      Windows.InvalidateRect(FC.Parent.Handle, @R, FALSE);
      R := FC.ClientRect;
      Windows.InvalidateRect(FC.Handle, @R, FALSE);
    end;
  except
    Result.Free;
    raise;
  end;
end;

转载于:https://www.cnblogs.com/wallace-xie/p/3981011.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值