关于裁剪图片的问题 我有一幅图片,我只想把图片的中间部分裁剪下来显示在image中,并保存到数据库。请问如何实现?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 保存图片的方式很多可以通过流来实现不过你说的图片剪切没弄过,不过你可以试着通过用Canvas.CopyRect函数来完成 我也正想实现一个这样的程序呢,kanven(zeng)有结果了没,我的QQ:34195512联系 procedure TCanvas.CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect);下面是一段delphi的例子var Bitmap: TBitmap; MyRect, MyOther: TRect;begin MyRect := Rect(10,10,100,100); MyOther := Rect(10,111,100, 201); Bitmap := TBitmap.Create; Bitmap.LoadFromFile('c:\windows\tartan.bmp'); Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack); Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect); Bitmap.Free;end; 楼主再看看吧,那样应该是可以的下面的这一句也是局部复制Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack); 用Scanline函数,和CopyMemory函数,如procedure TForm1.CutBMPImage;var ColorHi,y : integer; P1,P2 : PByteArray;begin ColorHi:=3; cutimg.Width:=XLength;//截取的宽度 cutimg.Height:=YLength;;//截取的高度 try for y := 0 to cutimg.height -1 do begin P1 := cutimg.ScanLine[y]; P2 := bmp.ScanLine[yStart+y+ScrollBox1.VertScrollBar.Position];//Ystart为起点纵坐标 CopyMemory(P1, Pointer(LongInt(P2)+(xStart+ScrollBox1.HorzScrollBar.Position)*ColorHi),cutimg.width*ColorHi);//Xstart为起点横坐标 end; except end; try Image2.Picture.Assign(CutImg); except end;end; to duanhai你的那段代码放到哪里写?我在button的onclick事件里写不行。 windows位图函数:BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序 CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作 CreateBitmap 按照规定的格式创建一幅与设备有关位图 CreateBitmapIndirect 创建一幅与设备有关位图 CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容 CreateCursor 创建一个鼠标指针 CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图 CreateDIBSection 创建一个DIBSection CreateIcon 创建一个图标 CreateIconIndirect 创建一个图标 DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源 DestroyIcon 清除图标 DrawIcon 在指定的位置画一个图标 DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之 ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来 GetBitmapBits 将来自位图的二进制位复制到一个缓冲区 GetBitmapDimensionEx 取得一幅位图的宽度和高度 GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息 GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里 GetIconInfo 取得与图标有关的信息 GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式 LoadBitmap 从指定的模块或应用程序实例中载入一幅位图 LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针 LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针 LoadIcon 从指定的模块或应用程序实例中载入一个图标 LoadImage 载入一个位图、图标或指针 MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理 PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景 PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理 SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图 SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位 SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息 SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里 SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备 SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式 StretchBlt 将一幅位图从一个设备场景复制到另一个 StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景 你需要用到TGraphic类的SaveToFile也就是说你截剪的图形应放在一个TGraphic类中 请问如何在DLL之中呼叫Webservice? DBGridEh格式问题? 小弟初学,想连个数据库可老不成功,哪为老大帮个忙?? DELPHI 制作外壳 能否只显示年或只显示年和月? 关于函数参数的问题 输入法问题?十万火急 关于删除记录的问题 InternetReadFile 执行过程中断网 引发死机的问题(delphi) 既送控件(附源码),又送分,大家快来拿啊。 迷茫,散分...... 如何在dll中检测主调应用程序是否激活? 急手的事情?
可以通过流来实现
不过你说的图片剪切
没弄过,不过你可以试着通过用Canvas.CopyRect函数来完成
const Source: TRect);下面是一段delphi的例子var
Bitmap: TBitmap;
MyRect, MyOther: TRect;
begin MyRect := Rect(10,10,100,100); MyOther := Rect(10,111,100, 201);
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:\windows\tartan.bmp');
Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack);
Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect);
Bitmap.Free;
end;
Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack);
procedure TForm1.CutBMPImage;
var
ColorHi,y : integer;
P1,P2 : PByteArray;
begin
ColorHi:=3;
cutimg.Width:=XLength;//截取的宽度
cutimg.Height:=YLength;;//截取的高度
try
for y := 0 to cutimg.height -1 do
begin
P1 := cutimg.ScanLine[y];
P2 := bmp.ScanLine[yStart+y+ScrollBox1.VertScrollBar.Position];//Ystart为起点纵坐标
CopyMemory(P1, Pointer(LongInt(P2)+(xStart+ScrollBox1.HorzScrollBar.Position)*ColorHi),cutimg.width*ColorHi);//Xstart为起点横坐标
end;
except end; try
Image2.Picture.Assign(CutImg);
except end;
end;
CopyIcon 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
CopyImage 复制位图、图标或指针,同时在复制过程中进行一些转换工作
CreateBitmap 按照规定的格式创建一幅与设备有关位图
CreateBitmapIndirect 创建一幅与设备有关位图
CreateCompatibleBitmap 创建一幅与设备有关位图,它与指定的设备场景兼容
CreateCursor 创建一个鼠标指针
CreateDIBitmap 根据一幅与设备无关的位图创建一幅与设备有关的位图
CreateDIBSection 创建一个DIBSection
CreateIcon 创建一个图标
CreateIconIndirect 创建一个图标
DestroyCursor 清除指定的鼠标指针,并释放它占用的所有系统资源
DestroyIcon 清除图标
DrawIcon 在指定的位置画一个图标
DrawIconEx 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能
ExtractAssociatedIcon 判断一个可执行程序或DLL中是否存在图标,或是否有图标与系统注册表中指定的文件存在关联并提取之
ExtractIcon 判断一个可执行文件或DLL中是否有图标存在,并将其提取出来
GetBitmapBits 将来自位图的二进制位复制到一个缓冲区
GetBitmapDimensionEx 取得一幅位图的宽度和高度
GetDIBColorTable 从选入设备场景的DIBSection中取得颜色表信息
GetDIBits 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
GetIconInfo 取得与图标有关的信息
GetStretchBltMode 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
LoadBitmap 从指定的模块或应用程序实例中载入一幅位图
LoadCursor 从指定的模块或应用程序实例中载入一个鼠标指针
LoadCursorFromFile 在一个指针文件或一个动画指针文件的基础上创建一个指针
LoadIcon 从指定的模块或应用程序实例中载入一个图标
LoadImage 载入一个位图、图标或指针
MaskBlt 执行复杂的图象传输,同时进行掩模(MASK)处理
PatBlt 在当前选定的刷子的基础上,用一个图案填充指定的设备场景
PlgBlt 复制一幅位图,同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
SetBitmapBits 将来自缓冲区的二进制位复制到一幅位图
SetBitmapDimensionEx 设置一幅位图的宽度。以一毫米的十分之一为单位
SetDIBColorTable 设置选入设备场景的一个DIBSection的颜色表信息
SetDIBits 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
SetDIBitsToDevice 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
SetStretchBltMode 指定StretchBlt 和 StretchDIBits函数的伸缩模式
StretchBlt 将一幅位图从一个设备场景复制到另一个
StretchDIBits 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景