zoukankan      html  css  js  c++  java
  • 实现TCHART+上面透明图片飘动效果

    实现TCHART+上面透明图片飘动效果delphi

    tchart也用GDI+功能实现,实现功能包括,x轴坐标,y轴坐标显示,外框实线,内框虚线,并实时画曲线
    波动率,并有TCHART背景图片
    实现方法是:
    uses GDIPOBJ, GDIPAPI;
    以下过程均在FormPaint中实现
    var g:tgpGraphics;
        Image,Thumbnail: TGPImage;
        bit1,bit2:tbitmap;
        m,n:integer;
        t:integer;
    正确的做法是要用 TBitmap 来缓冲:
    1、给 TBitmap1 载入你的图片;
      bit1:=tbitmap.Create;
      bit1.LoadFromFile('C:\Documents and Settings\king\My Documents\My   Pictures\winter_1024_1_.bmp');
    2、在带有图片的 TBitmap1 上画格;
    x轴坐标,y轴坐标显示,外框实线,内框虚线,

    3、把 TBitmap1 上画好的东西复制到 TBitmap2;
      bit2.Assign(bit1);
      bit2.Canvas.Pen.Color:=clred;
      bit2.Canvas.Pen.Style:=pssolid;
    4、在 TBitmap2 上画你的实时曲线;
      for t:=0 to arrj-2 do    //画曲线
      begin
        if (yarr[t+1]<>'') and (yarr[t]<>'') then//yarr为实时获取的数据数组
        begin
        //540为500格子的高度+从40点画起
        bit2.Canvas.MoveTo(t*20+40,strtoint(floattostr(int(540-strtofloat(yarr[t])*(500/(strtofloat(yarr        [maxy])*2))))));
        bit2.Canvas.LineTo((t+1)*20+40,strtoint(floattostr(int(540-strtofloat(yarr[t+1])*(500/(strtofloat       (yarr[maxy])*2))))));
        end;
      end;

    5、把 TBitmap2 上的图型复制到目的地.
        //将bit2画好的图片放到image1上
      BitBlt(Form1.image1.Canvas.Handle, 0, 0, bit2.Width, bit2.Height, bit2.Canvas.Handle, 0, 0, SRCCopy);
    6、在图片上面画飘动的透明图片

      g:=tgpgraphics.Create(image1.Canvas.Handle);

      //////画png透明移动图片
      Image:=   TGPImage.Create('C:\Documents and Settings\king\桌面\未标题-1.png');
      Thumbnail   :=   image.GetThumbnailImage(200,   150,   nil,   nil);
      g.DrawImage(Thumbnail,   i,   10,   Thumbnail.GetWidth,   Thumbnail.GetHeight);
      Image.Free;
      Thumbnail.Free;

       bit1.Free;
       bit2.Free;
    7、timer1事件,另透明图片移动
      i:=i+2;
      if i>800 then i:=-150 ;
      repaint;
    8、timer2事件主要实现取波动数据,并画波动率,在x轴标点实现时间的变化
       g1 := TGPGraphics.Create(image1.Canvas.Handle);
        p3 := TGPPen.Create(MakeColor(255,0,0), 2);
        f3:=TGPFont.Create('宋体', 9);
        solidbrush3:=TGPSolidBrush.Create(aclblack);
        if (time=3) or (time=0) then
        begin
          g1.DrawString(formatdatetime('hh-mm-ss',now),-1,f3,makepoint(strtofloat(inttostr(j-      30)),550.0),solidbrush3);
          time:=0;
          xarr[arri]:=formatdatetime('hh-mm-ss',now);
        end;
    9、FormCreate事件中实现避免画面抖动
      i:=-150;
      self.DoubleBuffered:=true;

  • 相关阅读:
    yii2.0的学习之旅(一)
    elasticSearch查询(一)
    PHP--常用配置项
    php7和php5区别是什么
    做社交电商的朋友注意了!芬香的竞‌品出‌来了,小绿券,跟芬‌香几‌乎一‌模一样,但是这‌个邀请码3RIOQQ是刚刚流出的,我这里是第一手!
    为什么强烈推荐 Java 程序员使用 Google Guava 编程!
    MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
    微软宣布加入 OpenJDK,打不过就改变 Java 未来!
    IntelliJ 平台 2020 年路线图
    年底了,整理了一份程序员面试必看的文章合集
  • 原文地址:https://www.cnblogs.com/wangyuanf/p/1633877.html
Copyright © 2011-2022 走看看