Delphi中关于Canvas.TextOut
我想让字符串在Canvas上显现出来,但不知道如何改变字底边的颜色,想变成透明或其它色彩都行, 只是希望所输出的字符串不会影响到Canvas里边的图形。请问前辈们让如何做呢? Canvas.Font.Color:=clblue;//字体颜色 //Canvas.Brush.Color:=clred;//底色 Canvas.Brush.Style := bsClear;//透明 canvas.textout(0,0,'avalokita'); 拉两个 TImage procedure TfrmMain.FormCreate(Sender: TObject); begin Image1.Canvas.Brush.Color := clBlack; Image1.Canvas.FillRect(Image1.ClientRect); Image1.Canvas.Font.Color := clRed; Image1.Canvas.Font.Name := 'Times New Roman'; Image1.Canvas.Font.Size := 18; Image1.Canvas.TextOut(9, 36, 'Delphi'); end; // 水平转 procedure TfrmMain.Button1Click(Sender: TObject); var i: integer; begin for i := 1 to Image1.Width do BitBlt(Image2.Canvas.Handle, i, 0, 1, Image2.Height, Image1.Canvas.Handle, Image1.Width - i, 0, SRCCOPY); Image2.Refresh; end; // 垂直转 procedure TfrmMain.Button2Click(Sender: TObject); var i: integer; begin for i := 1 to Image1.Height do BitBlt(Image2.Canvas.Handle, 0, i, Image2.Width, 1, Image1.Canvas.Handle, 0, Image1.Height - i, SRCCOPY); Image2.Refresh; end; --------------------------------------------- 1.具有CANVAS属性的控件: TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBox,TDirectoryListBox, TDrawGrid,TFileListBox,TForm,THeaderControl,TImage,TListBox,TOutline, TPaintBox,TPrinter,TStatusBar,TStringGrid等, 2.CANVAS属性及命令:篇幅所限,省略参数及格式说明,具体请参考文后程序及DELPHI帮助文件: canvas.rectangle():画矩形pen.color:定义画笔颜色 roundrect():画圆角矩形pen.width:定义画笔宽度 arc():画弧线(不填充) brush.color:定义填充颜色 chord():画弧线(填充) textout():在固定位置输出字符串 pie:画扇形 textwidth:取字符串高度 polygon():画多边形填充textheight:取字符串宽度 polyline():多点联机(不填充)font.color:指定字体颜色 Pixels():指定固定象素点颜色值font.size:指定字体大小 moveto():指明画线起点 Ellipse():画圆或椭圆 lineto():指明画线终点 3.使用CANVAS注意事项:当窗口进行重画时,画布上的图像将消失,比如当窗口进行最小化又重新恢复时,就会引起画布上图像的消失,另外当刚刚运行程序时,窗口也是属于重新绘制,所以如果在绘制窗口之前在画布上绘图,弹出窗口后将不能显示出图像,比如在TForm1.FormCreate()事件中进行画布绘图操作将是徒劳的,但可以在此事件中进行画布操作的准备工作,比如设置画笔的颜色和宽度等。 procedure TForm1.SpeedButton5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Sender is Tspeedbutton then begin statusbar1.canvas.Brush.Color:=clwhite; statusbar1.canvas.fillRect(statusbar1.Canvas.ClipRect);//清空画布 statusbar1.Panels[0].Style:=psOwnerDraw; statusbar1.Canvas.font.Color:=clred;//字体颜色 statusbar1.Canvas.Brush.Color:=clblue;//底色 statusbar1.Canvas.brush.style:=bsclear; //透明 statusbar1.Canvas.TextOut(0,5,'This is sample'); //定位x,y坐标轴及输入文字 end; end; Canvas.Brush.Style:=bsclear 可以去掉字体的背景 |
- 上一篇 »python 中关于kafka的API
- 下一篇 »java多线程中关于原子操作