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);

Delphi是一种在Windows操作系统上进行图形化编程的集成开发环境(IDE)和编程语言。TImageDelphi中的一个图像控件,用于在窗体上显示图像。 TImage的源码是Delphi VCL(可视化组件库)的一部分,它可以在Delphi的安装目录下找到。在源码中,TImage组件的属性和方法都定义在相应的单元文件中。 TImage具有以下一些重要的属性和方法: 1. Picture属性:该属性指定了要显示在TImage上的图像。可以通过加载图像文件、从资源加载图像或使用程序生成图像来设置该属性。 2. Stretch属性:当Stretch属性为True时,图像将被拉伸以适应TImage控件的大小。当为False时,图像将以原始大小显示。 3. OnClick事件:当用户单击TImage控件时触发的事件,可以在事件处理程序中编写与单击相关的代码。 4. Canvas属性:TImage控件的Canvas属性提供了一些用于在图像上绘制的方法。通过Canvas,可以绘制线条、矩形、椭圆和文本等。 5. LoadFromFile方法:该方法用于从文件加载图像,并将其显示在TImage控件上。 TImage的源码实现了这些属性和方法,并通过调用Windows API函数来操作图像的加载、绘制和缩放等操作。通过查阅Delphi的帮助文档和阅读TImage相关的源码,可以更深入地了解和掌握这些功能的实现原理。 总之,Delphi TImage的源码提供了对图像的加载、显示和绘制能力,使开发者能够方便地在窗体上展示图像,并进行相关的操作和交互。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值