Timage上作图

今天突然想在Timage控件上作图,自然是想到此控件里的bitmap于是有以下代码片段:

image1.Picture.Bitmap.Canvas.TextOut(0,0,'abc');

结果什么也没得到,后来用image1.Canvas.TextOUt(0,0,'abc')终于输出了'abc'三个字母,为什么用刚才那句不能输出想要的内容呢?原来是Bitmap没有设置宽和高,所以应该这样做:

image1.Picture.Bitmap.width := 200;//设置位图的宽
image1.Picture.Bitmap.height := 220;//设置位图的高
image1.Picture.Bitmap.Canvas.TextOut(0,0,'abc');//这回可以输出内容了。

如果想清除位图上的内容,用image1.Picture.Bitmap.assign(nil);就可以了。不过,用了这句之后,image.Canvas.TextOut(0,0,'abc')却无法输出内容了,再用上面那三句才可以输出内容,所以,以后想在Timage控件上作图要么就新建一个Bitmap设好宽和高画好图,assign给Timage,要不就用上面那三句。

另外:

1.如果用Timage.Picture的assign方法给Timage赋了图,就不能在Canvas上画图了,如果想给先赋一张图,然后在这张图上画图就要用Draw的方法给image1.Picture.Bitmap画上去,然后再画自己想画的图。

2.如果用Timage.Picture的assign依法给Timage赋了图,Timage设置stretch为真,实际图片的大小与Timage的大小不一致时,想用BrushCopy或CopyRect时就要注意,因为实际图片大小与显示的不一致,所以复制到的内容可能与想要的内容不一致,这时就要把实际图片以Timage的大小画过去。
主要用到以下两个函数:
(1)SetStretchBltMode(newmybmp.Canvas.Handle,HalfTone);  
(2)StretchBlt(newmybmp.Canvas.Handle,0,0,newidth,newheight,
                       oldmybmp.Canvas.Handle,0,0,oldwidth,oldhdight,SRCCOPY);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值