C++ builder里写一个渐变条

来源:互联网 发布:JS删除disabled 编辑:程序博客网 时间:2024/04/29 14:58

 1. 原理

先在photoshop中, 画一个渐变条, 例如300*20 pixels, 存成bmp

图1: 渐变条的效果

C++ builder里写一个渐变条 - huasoft - 快乐的机器猫 小桥加加网易分站

在C++ BUILDER6中, 我们放1个TPanel做我们进度条的容器, 放2个Image控件,都load进刚才那个渐变的图片

原理是: 将Image1 设为TPanel一样的大小一样的位置, 将image2平行排在TPanel左边恰好相接, 然后设一个timer(Interval属性设为10),  将Image1和Image2整体向右一点一点移动, 无论是Imgae1或Image2完全移出TPanel,都将自己的位置移到TPanel左边, 这样实现视觉上的平滑。

图2: 窗体的设计

C++ builder里写一个渐变条 - huasoft - 快乐的机器猫 小桥加加网易分站

图3:运行效果

C++ builder里写一个渐变条 - huasoft - 快乐的机器猫 小桥加加网易分站

2 代码

void __fastcall TForm1::FormShow(TObject *Sender)
{
        Image1->Top=0;
        Image1->Left = 0;
        Image1->Height = Panel1->Height;
        Image1->Width = Panel1->Width;
        Image1->Stretch = true;

        Image2->Top=0;
        Image2->Left = -Panel1->Width;
        Image2->Height = Panel1->Height;
        Image2->Width = Panel1->Width;
        Image2->Stretch = true;

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        Image1->Left +=1;
        if(Image1->Left == Image1->Width)
                Image1->Left = -Image1->Width;

        Image2->Left +=1;
        if(Image2->Left == Image1->Width)
                Image2->Left = -Image1->Width;

}

原创粉丝点击