C++中大尺寸图象的显示技巧

C++中大尺寸图象的显示技巧,第1张

C++中大尺寸图象的显示技巧,第2张

在C++Builder中使用Timage控件可以方便地读取和显示图像,但是Timage控件本身不能接收输入焦点,也没有滚动条。当显示超出显示区域的大图像时,需要加强图像控制。本文提出了两种最简单有效的方法来满足不同应用的需要。

-方法1:添加滚动条。

-添加滚动条可以通过在TScrollBox控件中放置Timage来实现。步骤如下:

(1)、在表单中放置一个TScrollBox控件并调整其大小。

-(2),将TScrollBox控件的AutoScroll属性设置为True。

(3)在TScrollBox控件中放置一个Timage控件。

-(4)设置Timage控件的属性:AutoSize为真,Left为0,Top为0。以上增强后,如果Timage的图像大于显示窗口,滚动条会自动出现;如果图像小于显示窗口,滚动条会自动消失,从而实现大图像的浏览。

-方法二:图像漫游。

-图像漫游(Image roaming)是指在没有滚动条的情况下,通过键盘或鼠标控制图像的移动,使你可以在一个很小的显示区域内浏览图像的任何部分。以鼠标控制为例。

(1)在窗体中放置一个Tpanel控件,并调整其大小。

-(2),在Tpanel控件中放置一个图像控件。

-(3)将Timage控件的AutoSize属性设置为true,True,Left属性设置为0,Top属性设置为0。

(4)在TForm1的类定义中添加两个私有变量:intiX0,iY0

-(5),响应Timage控件的OnMouseDown和OnMouseMove事件。

void _ _ fastcalltform 1::image1 mousedown(to object * Sender,

TMouseButtonButton,TShiftStateShift,intX,intY)

{

iX0 = X;

iY0 = Y;

}

void _ _ fastcalltform 1::image1 mousemove

(Tobject * Sender,TShiftStateShift,intX,intY)

{

intiDeltaX,iDeltaY

如果(Shift。包含(ssLeft))

{

idel tax = X-iX0;

idel tay = Y-iY0;

if(iDeltaY)

image1-> Left+= idel tax;

if(iDeltaY)

image1-> Top+= idel tay;

}

}

(6)运行时按住鼠标左键拖动,图像会跟着移动。

(7).如果是键盘控制的话,就参考鼠标控制的代码,加上键盘控制。

(8)在实际应用中,根据需要添加边界限制,保证图像不会移出显示区域。

-以上两种方法在自己开发的软件中已经应用多次,效果非常好。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中大尺寸图象的显示技巧

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情