有一张bmp或者jpg在Image上,想在一些位置标志一些数据,而且数据是动的,例如:在一个管子旁边标志他的实时流量.
解决方法1:用label显示数值,问题是:如果设置stretch为true;那么如果窗体的大小改变时,也就是图象放大或者缩小了,label的位置相对bmp上的一个点位置改变了.解决方法2:用Canvas.TextOut,因为Canvas.TextOut是随着Image放大和缩小的.但是在文字下面有底色,如果设setbkmode(Image1.Canvas.Handle,transparent);这样没有了底色,这样的话,应该是一直在一个点上输出文字,而成了文字叠加,最后形成一个黑条.第一和第二种方法如何解决?
解决方法1:用label显示数值,问题是:如果设置stretch为true;那么如果窗体的大小改变时,也就是图象放大或者缩小了,label的位置相对bmp上的一个点位置改变了.解决方法2:用Canvas.TextOut,因为Canvas.TextOut是随着Image放大和缩小的.但是在文字下面有底色,如果设setbkmode(Image1.Canvas.Handle,transparent);这样没有了底色,这样的话,应该是一直在一个点上输出文字,而成了文字叠加,最后形成一个黑条.第一和第二种方法如何解决?
image 在stretch为true的情况下,如何保证label相对image上的一个点的位置不变呢?
TCanvasTexthttp://www.codeidea.com/html/components.html
2、在Image_Back上写字
3、把写好字的内存图赋值给Image显示
4、Image_Back读取原来的图片
再重复2步骤
Canvas.FillRect(Rect(0,0,600,100)); Canvas.Font.Size := 12;
Canvas.Font.style :=[fsbold] ;
Canvas.Font.Color:=rgb(255,0,0);
SetBkMode(Canvas.Handle,TRANSPARENT);//文字透明!
Canvas.TextOut(0,0,'输出的字符串');
看看这个有用吗