转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
通过Delphi 实现图象的缩放         ★★★★

通过Delphi 实现图象的缩放

作者:闵涛 文章来源:闵涛的学习笔记 点击数:820 更新时间:2009/4/23 18:41:00
给你一个图像放大的文章:
本文介绍实现图象局部、平滑和无闪烁放大的算法原理,以及在Delphi中实现的技术。读完本文,您一定会为Delphi能用如此少的代码实现如此强大的功能惊叹不已,这是许多其它开发工具所无法比拟的。

算法原理

在Delphi中,可利用类Tcanvas的CopyRect方法实现图象的放大和缩小。其功能是将源画布上的一个指定矩形区域(简称源矩形)内的象素,拷贝到目的画布上的一个指定矩形区域(简称目的矩形)中。亦可称之为象素块复制,如图1所示。

由CopyMode属性确定拷贝的模式。在直接拷贝模式(cmSrcCopy)下,当源矩形与目的矩形相等时,图象不变;若源矩形大于目的矩形,图象则缩小;而当源矩形小于目的矩形时,图象便被放大(在目的矩形中扩展)。源矩形与目的矩形大小之比,决定图象的缩放倍数。CopyRect方法声明如下:

Procedure CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: Trect);

其中参数,Dest为目的矩形,Canvas是源画布,Source为源矩形。

实现步骤

新建应用程序主目录C:\Magnifier及其子目录Images,将事先制作好的位图图象Picture.bmp存入Images目录。本例中,Picture.bmp的大小为260*310象素。

启动Delphi IDE,新建项目Magnifier.dpr,主窗体单元命名为Main.pas,存入C:\Magnifier目录。在主窗体上放置一个TPanel组件,并在其中加入两个TImage组件。两个TImage组件分别命名为ForeImage和BackImage,前者重叠于后者之上,并且都装入Picture.bmp位图。

主窗体和各组件的主要属性按表1设置:

表1 主窗体和各组件属性设置

组 件        属 性                      设 置
Form1        BorderIcons.biMaximize    False
              BorderStyle  bsNone
              Color                      clRed
              Height                    364
              KeyPreview                True
              Name                      MainForm
              Position                  poScreenCenter
              Width                      294
              WindowState                wsNormal
Panel1        Align                      alNone
              BevelInner                bvLowered
              BevelOuter                bvRaised
              BevelWidth                2
              BorderStyle                bsNone
              BorderWidth                2
              Height                    322
              Name                      FramePanel
              Visible                    Ture
              Width                      272
Image1        Align                      alNone
              AutoSize                  True
              Center                    True
              Height                    310
              Name                      BackImage
              Picture                    Picture.bmp
              Stretch                    False
              Visible                    False
              Width                      260
Image2        Align                      alNone
              AutoSize                  True
              Center                    True
              Height                    310
              Name                      ForeImage
              Picture                    Picture.bmp
              Stretch                    False
              Visible                    True
              Width                      260

上述各组件的许多属性,读者亦可根据个人的爱好设定。在主单元Main.pas的implementation段声明常量和变量:

const

sSide=30;
dSide=45;

var
msHide: Boolean;
OldX, OldY, NewX, NewY: Integer;
DestRect, SourceRect : TRect;

其中,常量sSide和dSide用以控制“放大镜”的大小和放大倍数;变量msHide控制光标(鼠标)的隐藏和打开;其它变量用以确定放大部位。

建立主窗体MainForm的OnCreate事件,加入下列语句,以初始化变量及设置复制模式:
msHide:=True;
Canvas.CopyMode:=cmSrcCopy;


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台