zoukankan      html  css  js  c++  java
  • 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.定义画笔宽度   
    arc():
    画弧线(不填充) brush.color:定义填充颜色   
    chord():
    画弧线(填充) textout():在固定位置输出字符串   
    pie:
    画扇形 text取字符串高度   
    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 可以去掉字体的背景

  • 相关阅读:
    【Demo 0025】注册/反注册窗体类RegisterClassEx/UnregisterClass
    【Demo 0028】获取窗体信息
    【Demo 0021】窗体创建过程
    FLTK编译安装方法 (转)
    图形学名词解释2(转帖)
    五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) [网上整理]
    无法定位程序输入点XXXXX于动态链接库qtcore.dll
    图形学名词解释1(转贴)
    几何建模研究领域介绍(名词解释&& 转帖)
    C++ hash_map详细介绍[转]
  • 原文地址:https://www.cnblogs.com/shuaixf/p/1330982.html
Copyright © 2011-2022 走看看