大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> C++ Builder 中的图像显示技巧

C++ Builder 中的图像显示技巧

时间: 2021-07-31 作者:daque

文/黄建志  在c++ builder中,实行一幅图像的表露特殊大略,只有在form窗体中设置一个timage组件,树立其picture属性,而后采用任何灵验的.ico、.bmp、.emf或.wwf文献,加载进入,所选文献就表露在timage组件中。但这不过径直将图形表露在窗体中,毫无本领可言,给人发觉是一种枯燥无味。为了使图形表露有标新立异的功效。按下列办法实行:  1、 设置一个timage组件,把要表露的图形先加载到timage组件中,也即是说,把图  形实质从磁盘载入外存中,动作图形缓存。  2、 创造一新的位图东西,其尺寸跟timage组件中的图形一律。  3、 运用画布(canvas)的copyrect功效(将一个画布的矩形地区正片到另一个画布的矩形地区),以到达动静表露位图。  底下引见百般图形表露本领的简直实行本领。  上拉功效图1  实行道理:开始将暂存图形的第一条程度线,搬移至要表露位图的结果一条,接着再将暂存图形的前两条程度线,顺序搬移至要表露位图的结果两条程度线,而后搬移前三条、前四条直到十足图形数据搬完为止。在搬移的进程中即可看到表露的位图由下而上浮起,而到达上拉的功效(如图1)。  步调算法:  void _fastcall tfor-  m1::button1click(tobject *sender)   {int i,width,height;  graphics::tbitmap *newbmp;  newbmp=new graphics::tbitmap;  newbmp-〉width=image1-〉width;  newbmp-〉height=image1-〉height;  width=image1-〉width;  height=image1-〉height;  for(i=0;i  {newbmp-〉canvas-〉copyrect(rect(0,height-i,width,height),  image1-〉canvas,rect(0,0,width,i));  form1-〉canvas-〉draw(10,10,newbmp);}  delete newbmp;}  从左向右平铺表露功效图2  实行道理:开始将暂存图形的结果一条竖线,搬移至要表露位图的第一条竖线,接着再将暂存图形的结果两条竖线,依序搬移至要表露位图的前两条竖线,而后搬移结果三条、四条竖线直到十足图形数据搬完为止。在搬移的进程中即可看到表露的位图由左向右浮起,而到达从左向右平铺表露的功效(如图2)。  步调算法:  void _fastcall tform1::button2click(tobject *sender)  {int i,width,height;  graphics::tbitmap *newbmp;  newbmp=new graphics::tbitmap;  newbmp-〉width=image1-〉width;  newbmp-〉height=image1-〉height;  width=image1-〉width;  height=image1-〉height;  for(i=0;i<=width;i++)  { newbmp-〉canvas-〉  copyrect(rect(0,0,i,height),  image1-〉canvas,rect(width-i,0,width,height));  form1-〉canvas-〉draw(10,10,newbmp); }  delete newbmp;}  笔直交叉功效图3  实行道理:将要表露的图形拆成两局部,单数条扫描线由上往下搬移,双数条扫描线则由下往上搬移,并且两者同声举行。便可看到辨别由左右两头展示的较淡图形向屏幕中心挪动,直到实足领会为止(如图3)。  步调算法:  void __fastcall tform1::bitbtn3click(tobject *sender)  {graphics::tbitmap *newbmp;  int i,j,height,width;  newbmp=new graphics::tbitmap;  newbmp-〉width=image1-〉width;  newbmp-〉height=image1-〉height;  height=image1-〉height;  width=image1-〉width;  i=0;  while(i<=height)  {for(j=0;j  {newbmp-〉canvas-〉copyrect(rect(j*2,0,j*2+1,i),image1-〉canvas,  rect(j*2,0,j*2+1,i));  newbmp-〉canvas-〉copyrect(rect(j*2+1,height,j*2+2,height-i),  image1-〉canvas, rect(j*2+1,height,j*2+2,height-i)); }  form1-〉canvas-〉draw(10,10,newbmp);  i+=2; }  delete newbmp;}  程度交叉功效图4  实行道理:同笔直交叉功效道理一律,将要表露的图形拆成两局部,单数条扫描线由左往右搬移,双数条扫描线则由右往左搬移,两者同声举行。从屏幕上便可看到辨别由安排两头展示的较淡图形向屏幕中心挪动,直到实足领会为止(如图4)。  步调算法:  void __fastcall tform1::bitbtn4click(tobject *sender)  {int i,j,height,width;  graphics::tbitmap *newbmp;  newbmp=new graphics::tbitmap;  newbmp-〉width=image1-〉width;  newbmp-〉height=image1-〉height;  height=image1-〉height;  width=image1-〉width;  i=0;  while(i<=height)  {for(j=0;j  {newbmp-〉canvas-〉copyrect(rect(0,j*10,i,j*10+5),image1-〉canvas,  rect(0,j*10,i,j*10+5));  newbmp-〉canvas-〉copyrect(rect(width-i,j*10+5,width,j*10+10),  image1-〉canvas, rect(width-i,j*10+5,width,j*10+10)); }  form1-〉canvas-〉draw(10,10,newbmp);  i+=2; }  delete newbmp;}  从左到右圆筒震动功效图5  实行道理:图形复制进程中,把目的图形的坐标依照弧线办法挪动,以到达圆筒震动功效(如图5)。  步调算法:  void __fastcall tform1::bitbtn5click(tobject *sender)  {int i,j,height,width;  graphics::tbitmap *newbmp;  newbmp=new graphics::tbitmap;  newbmp-〉width=image1-〉width;  newbmp-〉height=image1-〉height;  height=image1-〉height;  width=image1-〉width;  i=0;  int intr=50;  for(i=0;i<=width;i+=5)  {for(j=1;j<=2*intr;j++)  {newbmp-〉canvas-〉copyrect(rect(i+j,-sqrt(2*intr*j-j*j),i+j+1,-sqrt(2*intr*j-j*j)+height),image1-〉canvas,rect(i+j,0,i+j+1,height));}  newbmp-〉canvas-〉copyrect(rect(i,0,i+5,height),image1-〉canvas,rect(i,0,i+5,height));  form1-〉canvas-〉draw(10,10,newbmp);  sleep(10); }}  一切步调算法都在c++ builder 4.0和5.0调节和测试经过。 

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.