发现用Canvas.StretchDraw(re,g);绘制出来的.会被覆盖.要怎么样解决 ..
解决方案 »
- Never-build package 'classlibPkg' requires always-build package 'EhLib70'
- 如何判断窗口中是否有名为newuser的label控件?如何写呢?
- VCL 下载
- 凌风 请进~~大量散分~~
- 如何根据webbrowser中是否选择文本,确定菜单中的copy,cut等可用状态??使用什么事件??
- 很简单的问题,却总没找到最简单的实现方法
- 如何区分本机操作系统是否是服务器版本?
- ActiveX Mediaplayer 的Deviceid
- 好急(报错):[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。
- COM+客户端如何配置?
- 没办法。聘请您帮我看问题,支付宝打款200元。
- Delphi Panel遍历解释
而且如果你准备画的话,干嘛还要用image,直接在Form的Canvas上画就行了呗~
描述不清楚,究竟是几个Image,如果是一个Image,那么你在这个Image中执行Canvas.StretchDraw(re,g)当然会被覆盖了,或者是你准备画在这个页面上的东西有透明部分,那么你就先把Canvas.Brush.Style设置为bsClear,试试看呢?
PaintBox
↑
Image
↑
Panel
如果是这样的话,那么你就在PaintBox的OnPaint事件里面先设置Canvas.Brush.Style为bsClear,再画图。
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
FImg: TBitmap;
begin
with (Sender as TPaintBox) do
begin
//先禁止填充
Canvas.Brush.Style := bsClear;
//再开始画图
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := clNavy;
Canvas.Pen.Mode := pmBlack;
//画一条直线
Canvas.MoveTo(5, 5);
Canvas.LineTo(100, 100);
//画一个矩形
Canvas.Rectangle(40, 10, 60, 20);
//复制图片
FImg := TBitmap.Create;
try
FImg.LoadFromFile('globe.bmp'); //导入源图
FImg.TransparentColor := clPurple; //设置透明色
FImg.Transparent := True; //设置透明
Canvas.StretchDraw(Rect(20, 70, 52, 86), FImg);
finally
FreeAndNil(FImg);
end;
end;
end;
其中globe.bmp是Delphi自带的图片(尺寸:32*16)