画完成百分比的进度条

原创 2007年09月18日 12:44:00

procedure DrawProgressColorEH(Canvas: TCanvas;nProgress: Integer; const Rect: TRect; Column: TColumnEh);
var
  ldValue:integer;
  lsValue,lsTemp1,lsTemp2:string;
  lRect: TRect;
  X, Y,liTemp: Integer;
begin
  ldValue :=nProgress;
  with Canvas do //画 cell 的边框
  begin
    Pen.Color := $00ff0000; //定义画笔颜色(蓝色)
    MoveTo(Rect.Left, Rect.Top); //画笔定位
    LineTo(Rect.Right, Rect.Top); //画顶部蓝色的横线
    MoveTo(Rect.Left, Rect.Top); //画笔定位
    LineTo(Rect.Left, Rect.Bottom); //画左边绿色的竖线
    MoveTo(Rect.Left, Rect.Bottom); //画笔定位
    LineTo(Rect.Right, Rect.Bottom); //画底部蓝色的横线
    MoveTo(Rect.Right, Rect.Top); //画笔定位
    LineTo(Rect.Right, Rect.Bottom); //画右边绿色的竖线

    //画背景色
    Brush.Color:=clBtnFace;
    FillRect(Rect);

    //画百分比内容
    Brush.Color:=clNavy;
    lRect.Left :=Rect.Left ;
    lRect.Top := Rect.Top ;
    lRect.Bottom :=Rect.Bottom ;
    lRect.Right :=Rect.Left + Round((Rect.Right  - Rect.Left) * ldValue / 100);
    FillRect(lRect);

    //显示内容
    lsValue:=IntToStr(ldValue) + '%';
    X := (Rect.Left+Rect.Right) div 2 - TextWidth(lsValue) div 2;
    Y := (Rect.Bottom+Rect.Top) div 2 - TextHeight(lsValue) div 2;

    //如果有半个字在中间的,移动X解决半个字问题
    for liTemp:=1 to length(lsValue) do
    begin
      lsTemp1 :=MidBStr(lsValue,liTemp,1);
      lsTemp2 :=MidBStr(lsValue,1,liTemp - 1 );
      if (lRect.Right > (X + TextWidth(lsTemp2))) and (lRect.Right < (X + TextWidth(lsTemp2) + TextWidth(lsTemp1))) then
      begin
        if (lRect.Right > (X + TextWidth(lsTemp2) + TextWidth(lsTemp1) div 2)) then
          X := X - (X + TextWidth(lsTemp2) + TextWidth(lsTemp1) - lRect.Right)
        else
          X := X + ( lRect.Right - X - TextWidth(lsTemp2) );
      end;
    end;

    //单元格太小时的处理
    if X < lRect.Left then
       X:= lRect.Left;

    for liTemp:=1 to length(lsValue) do
    begin
      lsTemp1 :=MidBStr(lsValue,liTemp,1);     //需要显示的字符
      lsTemp2 :=MidBStr(lsValue,1,liTemp - 1 );     //
      if (lRect.Right > (x + TextWidth(lsTemp2) + TextWidth(lsTemp1) div 2)) then
      begin
        Brush.Color:=clNavy;
        Font.Color := clWhite;
      end
      else
      begin
        Brush.Color:=clBtnFace;
        Font.Color := clBlack;
      end;
      //字超过单元格时不显示
      if (x + TextWidth(lsTemp2) + TextWidth(lsTemp1)) < Rect.Right then
        Canvas.TextOut(X+ TextWidth(lsTemp2), Y, lsTemp1);
    end;
  end;
end; 

ios 滑块进度条百分比 显示进度

//该方法监听slider的值的改变- (IBAction)progressChanged:(UISlider *)sender {     CGFloat progress = sender.val...
  • zwp438123895
  • zwp438123895
  • 2015年10月08日 10:53
  • 446

double转为百分比

Java代码实现 [java] view plaincopyprint? public class PercentTest {      public static voi...
  • fendou1230
  • fendou1230
  • 2014年09月12日 09:55
  • 309

Android自定义View之如期相遇的百分比进度条RatioProgress

Android自定义View之如期相遇的百分比进度条RatioProgress
  • s003603u
  • s003603u
  • 2016年05月26日 20:40
  • 1747

svg制作圆圈百分比数据-进度条

突然接到需求,说需要做一个好评率百分比的效果,要有进度条的效果,还要是圆形的,博主也是对svg会一点点,在网上找了圆弧的计算方法,就写了这么个效果,适应了公司的需求,本文有不足之处,希望大家多多提提意...
  • l284969634
  • l284969634
  • 2016年11月08日 17:37
  • 1746

jquery实现百分比进度条

在开发过程中,有时候不得不自己写一些简单的jquery插件,下面给大家展示一下我自己写的一个jquer现实的百分比进度条 直接上图吧: 还是比较好看吧! 还支持进度条的单击事件,请执行dem...
  • wqj975005563
  • wqj975005563
  • 2015年05月28日 13:03
  • 4806

用Canvas画百分数圆环

用Canvas画自定义View,画一个带进度条的圆形比例图,包含了数字以及文字、百分号,如图所示:布局只是一个简单的线性布局: ...
  • Hebin320320
  • Hebin320320
  • 2016年04月06日 10:44
  • 1200

CSS中的百分比(%)到底是谁的百分比?

在定义CSS样式的时候经常会用的 “%”这个长度单位,但是这个百分比到底是相对于谁的百分比呢?1、有人说是相对于父元素的百分比,但是这么说有时候却会出问题...
  • qq_34099161
  • qq_34099161
  • 2016年09月22日 15:36
  • 4709

Android 带百分比数字的水平、圆形进度条

https://github.com/bingoogolapple/BGAProgressBar-AndroidBGAProgressBar-Android主要功能: Android 系统自带的 Pr...
  • zhangcanyan
  • zhangcanyan
  • 2017年04月13日 15:52
  • 1190

在JSP页面上实现进度条(带百分比)

1:在jsp上添加代码:这个table标签要隐藏,进度条执行的时候再显示 ...
  • ZhuiShiShuiNianQu
  • ZhuiShiShuiNianQu
  • 2014年01月12日 01:53
  • 1034

awk处理之案例一:awk 处理百分比的问题

db_check.txt文本内容如下: 10.128.96.187: D: 1.1T 86G 999G 8% /cygdrive/d 10.128.96...
  • hellotime
  • hellotime
  • 2013年08月08日 11:40
  • 937
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:画完成百分比的进度条
举报原因:
原因补充:

(最多只允许输入30个字)