一个图形叠加的有关问题
一个图形叠加的问题
要在程序中实现
在一张底图上叠加多个小图象。比如在地图上标注 五角星 类似的小图象或者小图标
------解决方案--------------------
Tcanvas.draw()
Tcanvas.copyrect()
bitblt()
等等都可以实现。
------解决方案--------------------
procedure DrawTranImage(DestCanvas: TCanvas; LeftPos: Integer; TopPos: Integer;
SourceImg: TBitmap; MaskImg: TBitmap); //绘制透明图像
var
OldCopyMode : LongInt; //原来的CopyMode设置值
begin
//DestCanvas:目标画布 SourceImg:原始图像 MaskImg:和原始图像配套的掩模
with DestCanvas do
begin
OldCopyMode := CopyMode; //保存原始的CopyMode设置
CopyMode := cmSrcAnd ; //将复制模式改为AND
Draw(LeftPos,TopPos,MaskImg); //绘制遮罩
CopyMode := cmSrcPaint; //将复制模式改为OR
Draw(LeftPos,TopPos,SourceImg); //绘制图象
CopyMode := OldCopyMode; //恢复原始的CopyMode设置
end;
end;
要在程序中实现
在一张底图上叠加多个小图象。比如在地图上标注 五角星 类似的小图象或者小图标
------解决方案--------------------
Tcanvas.draw()
Tcanvas.copyrect()
bitblt()
等等都可以实现。
------解决方案--------------------
procedure DrawTranImage(DestCanvas: TCanvas; LeftPos: Integer; TopPos: Integer;
SourceImg: TBitmap; MaskImg: TBitmap); //绘制透明图像
var
OldCopyMode : LongInt; //原来的CopyMode设置值
begin
//DestCanvas:目标画布 SourceImg:原始图像 MaskImg:和原始图像配套的掩模
with DestCanvas do
begin
OldCopyMode := CopyMode; //保存原始的CopyMode设置
CopyMode := cmSrcAnd ; //将复制模式改为AND
Draw(LeftPos,TopPos,MaskImg); //绘制遮罩
CopyMode := cmSrcPaint; //将复制模式改为OR
Draw(LeftPos,TopPos,SourceImg); //绘制图象
CopyMode := OldCopyMode; //恢复原始的CopyMode设置
end;
end;