图象处理高手请进,怎么实现图象的放大与缩小?进来有分

wolovecn 2003-09-24 10:56:18

在TImage上画图,
谢谢
最好有代码
...全文
45 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
horse_h 2003-09-24
  • 打赏
  • 举报
回复
up
haodaniu 2003-09-24
  • 打赏
  • 举报
回复
用stretchblt(image1.canvas.handle,left,top,width,height,bmp.canvas.handle,left,top,width,height,srccopy);
其中image1是你要往上绘图的image,bmp是你的原图,
就是用api函数stretchblt().
wolovecn 2003-09-24
  • 打赏
  • 举报
回复
wypepsi(百事可乐)
好象缩小时原来的图象也在
FrameSniper 2003-09-24
  • 打赏
  • 举报
回复
8会,学习!
wypepsi 2003-09-24
  • 打赏
  • 举报
回复
Image.Picture.LoadFromFile(ImageName);//将图片导入Image

Image.Stretch:=True;//打开图像的自动缩放属性

然后你只需要动态调节Image的Width和Height属性就可以实现图像的放大和缩小
dxwin 2003-09-24
  • 打赏
  • 举报
回复
我用vb编过一个,要扩大几倍就是把一个个象素点相应复制几个,简单
jpyc 2003-09-24
  • 打赏
  • 举报
回复
本文介绍实现图象局部、平滑和无闪烁放大的算法原理,以及在Delphi中实现的技术。读完本文,您一定会为Delphi能用如此少的代码实现如此强大的功能惊叹不已,这是许多其它开发工具所无法比拟的。
算法原理

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

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

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

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

实现步骤

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

启动Delphi IDE,新建项目Magnifier.dpr,主窗体单元命名为Main.pas,存入C:目录。在主窗体上放置一个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;

--------------------------------------------
参考吧
lxhong1980 2003-09-24
  • 打赏
  • 举报
回复
begin
image1.Width := image1.Width * 2;
image1.Height := image1.Height * 2;
//image2.Picture.Assign(image1.Picture);
image2.Stretch := true;
end;


procedure TForm1.BitBtn2Click(Sender: TObject);
begin
image1.Canvas.LineTo(77,77);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
image1.Width := image1.Width div 2;
image1.Height := image1.Height div 2;
end;
lxhong1980 2003-09-24
  • 打赏
  • 举报
回复
procedure TForm_HuaTu.BitBtn5Click(Sender: TObject);
begin
Image1.Canvas.CopyRect(Rect(0,0,2*Image1.Width,2*Image1.Height),Image1.Canvas, Rect(0,0,Image1.Width,Image1.Height));

end;

procedure TForm_HuaTu.BitBtn6Click(Sender: TObject);
begin
Image1.Canvas.Pen.Mode:=pmNotXor;

Image1.Canvas.CopyRect(Rect(0,0,Image1.Width div 2,Image1.Height div 2),Image1.Canvas, Rect(0,0,Image1.Width,Image1.Height));

end;

缩小的时候原来图象还在

继续关注
SnagIt屏幕截图截屏是使用电脑中最常运用到的功能之一,而系统自带的截图或者我们经常使用到的QQ截图功能并不能在所有窗口中都能截取画面,一些特殊的窗口,如:DOS屏幕;RM电影、游戏画面等窗口就需要专业点的截图工具来完成这项操作。今天推荐一个功能非常强大而且非常老牌的全能屏幕截图截屏软件给各位童鞋,它就是SnagIt,相对其他小型截图截屏软件来说,SnagIt体积算是巨大的,正因为SnagIt不单纯是截屏软件,后期编辑处理,图像格式转换,屏幕录制功能也完全胜任,SnagIt非常注重用户体验,可谓它是集截图、编辑、分享、管理于一身的一站式屏幕截图截屏软件。 各种方案适合各种需要: SnagIt四种图像捕捉模式(图像模式、文本模式、视频模式、Web模式),满足任何情况下的屏幕截图,支持自动定时捕捉功能。简单预置屏幕捕捉方案及输出方案并加上一些前期效果,如标题、边框、边缘效果、水印、各种色泽调整等等,成功截屏后,几乎可以保存为所有常见格式图象,如:BMP、PCX、TIF、GIF或JPEG格式,也可以存为视频动画。使用JPEG可以指定所需的压缩级(从1%到99%)。可以选择是否包括光标。另外还具有自动缩放,颜色减少,单色转换,抖动,以及转换为灰度级,可以将整个网页保存为Flash或pdf格式方便阅览。 内置强大的编辑与格式转换功能: 对于不同的捕捉类型的信息,请参阅你想捕捉什么? 使用FrameMaker中添加 1。在SnagIt的工具栏的下拉菜单选择的捕捉选项。 2。单击SnagIt的捕获按钮。捕捉出现在SnagIt的编辑。 3。编辑或注释在编辑器捕捉。 4。点击Finish按钮。捕获显示在FrameMaker中的文件。 自定义FrameMaker中捕获 单击SnagIt的工具栏上的设置按钮,自定义您的捕获。 选择立即打开您的捕获,编辑在编辑器中预览。 选择复制到文件插入到当前文档的捕获,或选择“无”发送捕获到输出选项选择剪贴板或文件。 选择捕获时间给自己设立的捕捉之前的时间延迟。菜单捕获总是使用的时间延迟。 选择参考的进口,以保持与源文件的图形。 FrameMaker中存储的路径,文件中的源文件。如果您编辑的源文件,FrameMaker中更新文件的最新版本。 使用自定义的图像缩放(DPI)来自动捕捉图像缩放。 Snagit相比其他截图工具,有它独特的功能特点: 1、捕捉的种类多:不仅可以捕捉静止的图像,而且可以获得动态的图像和声音,另外还可以在选中的范围内只获取文本。 2、捕捉范围极其灵活:可以选择整个屏幕,某个静止或活动窗口,也可以自己随意选择捕捉内容。 3、输出的类型多:可以以文件的形式输出,也可以把捕捉的内容直接发e-mail给朋友,另外可以编辑成册。 4、具备简单的图形处理功能:利用它的过滤功能可以将图形的颜色进行简单处理,也可对图形进行放大缩小
软件大小:23.9 MB 软件语言:简体中文 热 软件类别:图形图像/图像捕捉 软件授权:破解软件 更新时间:2011-12-06 SnagIt屏幕截图截屏是使用电脑中最常运用到的功能之一,而系统自带的截图或者我们经常使用到的QQ截图功能并不能在所有窗口中都能截取画面,一些特殊的窗口,如:DOS屏幕;RM电影、游戏画面等窗口就需要专业点的截图工具来完成这项操作。今天推荐一个功能非常强大而且非常老牌的全能屏幕截图截屏软件给各位童鞋,它就是SnagIt,相对其他小型截图截屏软件来说,SnagIt体积算是巨大的,正因为SnagIt不单纯是截屏软件,后期编辑处理,图像格式转换,屏幕录制功能也完全胜任,SnagIt非常注重用户体验,可谓它是集截图、编辑、分享、管理于一身的一站式屏幕截图截屏软件。 各种方案适合各种需要: SnagIt四种图像捕捉模式(图像模式、文本模式、视频模式、Web模式),满足任何情况下的屏幕截图,支持自动定时捕捉功能。简单预置屏幕捕捉方案及输出方案并加上一些前期效果,如标题、边框、边缘效果、水印、各种色泽调整等等,成功截屏后,几乎可以保存为所有常见格式图象,如:BMP、PCX、TIF、GIF或JPEG格式,也可以存为视频动画。使用JPEG可以指定所需的压缩级(从1%到99%)。可以选择是否包括光标。另外还具有自动缩放,颜色减少,单色转换,抖动,以及转换为灰度级,可以将整个网页保存为Flash或pdf格式方便阅览。 内置强大的编辑与格式转换功能: 对于不同的捕捉类型的信息,请参阅你想捕捉什么? 使用FrameMaker中添加 1。在SnagIt的工具栏的下拉菜单选择的捕捉选项。 2。单击SnagIt的捕获按钮。捕捉出现在SnagIt的编辑。 3。编辑或注释在编辑器捕捉。 4。点击Finish按钮。捕获显示在FrameMaker中的文件。 自定义FrameMaker中捕获 单击SnagIt的工具栏上的设置按钮,自定义您的捕获。 选择立即打开您的捕获,编辑在编辑器中预览。 选择复制到文件插入到当前文档的捕获,或选择“无”发送捕获到输出选项选择剪贴板或文件。 选择捕获时间给自己设立的捕捉之前的时间延迟。菜单捕获总是使用的时间延迟。 选择参考的进口,以保持与源文件的图形。 FrameMaker中存储的路径,文件中的源文件。如果您编辑的源文件,FrameMaker中更新文件的最新版本。 使用自定义的图像缩放(DPI)来自动捕捉图像缩放。 Snagit相比其他截图工具,有它独特的功能特点: 1、捕捉的种类多:不仅可以捕捉静止的图像,而且可以获得动态的图像和声音,另外还可以在选中的范围内只获取文本。 2、捕捉范围极其灵活:可以选择整个屏幕,某个静止或活动窗口,也可以自己随意选择捕捉内容。 3、输出的类型多:可以以文件的形式输出,也可以把捕捉的内容直接发e-mail给朋友,另外可以编辑成册。 4、具备简单的图形处理功能:利用它的过滤功能可以将图形的颜色进行简单处理,也可对图形进行放大缩小

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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