4张图片在一个Image控件中 依次交替显示,怎么实现??

htdl163 2007-05-21 02:40:04
A,B,C,D4张图片,想让他们在一个Image控件中 按顺序依次 显示,怎么实现?
即:在Image控件中 先显示A,过几秒中 在显示B,。。。。一直循环显示 ABCDABCD。。。。。。。。 谢谢啊
...全文
1053 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
huzhangyou 2007-05-22
  • 打赏
  • 举报
回复
Fireman_duck() 的代码是.net的
C#吧?猜测
huzhangyou 2007-05-22
  • 打赏
  • 举报
回复
to i_love_pc:
木说你哦 呵呵
表介意
MEFULEU 2007-05-22
  • 打赏
  • 举报
回复
楼上的代码怎么才能运行不出错~
Fireman_duck 2007-05-22
  • 打赏
  • 举报
回复
Bitmap[] bt=new Bitmap{new Bitmap(20,20),new Bitmap(20,20),new Bitmpa(20,20),new Bitmap(20,20)}
int i=0;
while (true)
{
Graphics g=From1.CreateGraphics();
if(i==4)
i=0;
else
i++;
g.DrawImage(bt[i]);
Sleep(1000);
}
shao99 2007-05-22
  • 打赏
  • 举报
回复
搞四个Image,随时显示好了
rainv 2007-05-22
  • 打赏
  • 举报
回复
mark
i_love_pc 2007-05-22
  • 打赏
  • 举报
回复
呵呵,那信仰哥来个不使用控件的吧!!
huzhangyou 2007-05-22
  • 打赏
  • 举报
回复
一堆 只知道使用控件的高手......
jacknes009 2007-05-22
  • 打赏
  • 举报
回复
正如chiangpiong(蓝色等待) 所说的
在Form放置一个TImageList控件,一个TTimer控件,一个TImage控件
双击TImageList控件,加入ABCD四张图片
双击TTimer控件,写入如下代码:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Image1->Picture->Assign(NULL);
ImageList1->GetBitmap(Image1->Tag,Image1->Picture->Bitmap);
Image1->Tag=((Image1->Tag+1)%4);
}

但另外要注意下TImageList控件宽高要设置下最好设置成ABCD四张图片的宽高那样图片才好看点
huzhangyou 2007-05-22
  • 打赏
  • 举报
回复
faint!白打了,BS CSDN,丢了不能回退。
to sj2521(探路者):
不知道您是否懂得Ajax.
Ajax是 XML + JavaScript结合的产物
是一种异步请求数据的方法
和这里没有任何关系

希望不要误导他人。

纯属讨论,木责骂吵架的意思。见谅。
天涯倦客 2007-05-22
  • 打赏
  • 举报
回复
TImageList省事些
gdi+ 也可。。
sj2521 2007-05-22
  • 打赏
  • 举报
回复
用ajax岂不是更简单
i_love_pc 2007-05-22
  • 打赏
  • 举报
回复
~!~
呵呵,知道,虽然我使用控件但不是高手。
chiangpiong 2007-05-21
  • 打赏
  • 举报
回复
没有必要那么复杂吧?下面的方法,可以试试看:
在Form放置一个TImageList控件,一个TTimer控件,一个TImage控件
双击TImageList控件,加入ABCD四张图片
双击TTimer控件,写入如下代码:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Image1->Picture->Assign(NULL);
ImageList1->GetBitmap(Image1->Tag,Image1->Picture->Bitmap);
Image1->Tag=((Image1->Tag+1)%4);
}
以上方法,在C++Builder6.0下面已经通过测试
huzhangyou 2007-05-21
  • 打赏
  • 举报
回复
代码下载地址:
http://www.libing.net.cn/read.php/1174.htm
huzhangyou 2007-05-21
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{

n = 0;
Graphics::TBitmap *Bitmap1 = new Graphics::TBitmap();
Bitmap1->LoadFromFile("C:\\A.bmp");
PBitmapVec.push_back(Bitmap1);
Graphics::TBitmap *Bitmap2 = new Graphics::TBitmap();
Bitmap2->LoadFromFile("C:\\B.bmp");
PBitmapVec.push_back(Bitmap2);
Graphics::TBitmap *Bitmap3 = new Graphics::TBitmap();
Bitmap3->LoadFromFile("C:\\C.bmp");
PBitmapVec.push_back(Bitmap3);
Graphics::TBitmap *Bitmap4 = new Graphics::TBitmap();
Bitmap4->LoadFromFile("C:\\D.bmp");
PBitmapVec.push_back(Bitmap4);
//Image1->Picture->Assign();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
vector<Graphics::TBitmap* >::iterator iter;
for(iter = PBitmapVec.begin() ; iter != PBitmapVec.end() ; ++iter){
delete (*iter);
(*iter) = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
/*
switch(n%4)
{
case 0:
Image1->Picture->Assign(PBitmapVec.operator [](n));
break;
case 1:
Image1->Picture->LoadFromFile("c:\B.bmp");
break;
case 2:
Image1->Picture->LoadFromFile("c:\C.bmp");
break;
case 3:
Image1->Picture->LoadFromFile("c:\D.bmp");
break;
default:break;
}
*/
Image1->Picture->Assign(PBitmapVec.operator [](n%4));
n++;
if(n==4)
n=0;


//Image1->Picture->Assign();
}
//---------------------------------------------------------------------------
huzhangyou 2007-05-21
  • 打赏
  • 举报
回复
休息的时间帮你实现了

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>

#include <vector>

using namespace std;
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TTimer *Timer1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall Timer1Timer(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
vector<Graphics::TBitmap* > PBitmapVec;
int n;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
huzhangyou 2007-05-21
  • 打赏
  • 举报
回复
可以使用TBitmap先加载到内存中
然后Assign就可以了
效率会好很多

这样的确会有效率问题
constantine 2007-05-21
  • 打赏
  • 举报
回复
建议不要每次都loadfromfile,利用visible控制好过,不然就用bmp先load,image做个循环放这个bmp。
i_love_pc 2007-05-21
  • 打赏
  • 举报
回复
修改一下

int n=0;

//设置Timer1的Interval
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
switch(n%4)
{
case 0:
Image1->Picture->LoadFromFile("c:\A.bmp");
break;
case 1:
Image1->Picture->LoadFromFile("c:\B.bmp");
break;
case 2:
Image1->Picture->LoadFromFile("c:\C.bmp");
break;
case 3:
Image1->Picture->LoadFromFile("c:\D.bmp");
break;
default:break;
}
n++;
if(n==4)
n=0;
}
加载更多回复(1)

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧