如果从一个tBitmap复制区一个区域到另一个tBitmap类? var bmp1,bmp2 : tBitmap从复制(截取)bmp1中的某个区域到bmp2中,请问,要怎么做呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 bmp2.Canvas.CopyRect(Rect(100,100,200,200), bmp1.Canvas, Rect(0,0,100,100));从bmp1 0,0,100,100区域拷贝到bmp2 100,100,200,200区域 procedure CropBitmap(InBitmap, OutBitMap : TBitmap; X, Y, W, H :Integer);begin OutBitMap.PixelFormat := InBitmap.PixelFormat; OutBitMap.Width := W; OutBitMap.Height := H; BitBlt(OutBitMap.Canvas.Handle, 0, 0, W, H, InBitmap.Canvas.Handle, X, Y, SRCCOPY);end;//使用方式Var Bmp : TBitmap;begin Bmp:=TBitmap.Create; try CropBitmap(Image1.Picture.Bitmap, Bmp, 10,0, 150, 150); .... finally Bmp.Free; end;end; StretchBlt还可以进行缩放楼上用JavaScript code也能把代码对的那么整齐 可以用windows提供的BitBlt函数实现 bmp2.Assign(bmp1);把bmp1的值给bmp2 这是我的代码:1、将图读入Image1;2、Image2,无图,与Image1重叠;鼠标Image2模拟获取截图的左上点,右下点位置数据:XX1,YY1,XX2,YY2;3、新图分辨率ComboBox1.ItemIndex4、新的图,以ImagePath+TempName+'.bmp'文件名另存;5、ChangeImageSize;显示截图代码如下:procedure TSeleteImageFrm.Button2Click(Sender: TObject);var MyRect, NewRect: TRect; Bmp,NewBmp: TBitmap; s1,s2:string; W,H,WW,WH:integer; k,k1:double;begin TempName:=Edit1.text; // 文件名 if (XX2=0) or (YY2=0) then begin XX1:=0; YY1:=0; XX2:=Image1.Picture.Graphic.Width; YY2:=Image1.Picture.Graphic.Height; end; Bmp:=TBitmap.Create; NewBmp:=TBitmap.Create; MyRect := Rect(XX1,YY1,XX2,YY2); NewRect := Rect(0,0,XX2-XX1, YY2-YY1); Bmp.Width:=XX2-XX1; Bmp.Height:=YY2-YY1; Bmp.Canvas.CopyRect(NewRect,Image2.Canvas, MyRect); case ComboBox1.ItemIndex of 0: ChangeAnyPixels(Bmp,NewBmp,100,133); 1: ChangeAnyPixels(Bmp,NewBmp,150,200); 2: ChangeAnyPixels(Bmp,NewBmp,200,266); 3: ChangeAnyPixels(Bmp,NewBmp,225,300); 4: ChangeAnyPixels(Bmp,NewBmp,300,400); end; NewBMP.SaveToFile(ImagePath+TempName+'.bmp'); Image1.Picture.Assign(BMP); Image2.Picture.Assign(BMP); ChangeImageSize; XX2:=0; YY2:=0; Bmp.Free; NewBmp.Free;end; bmp.Canvas.CopyRect Canvas.CopyRectAPI Bitbl等都可以 高手们看看这个Sql查询怎么写,Access的数据库 有关 ADOConnection 连接测试问题? 高分请教DelphiX的问题 我一般不说倒粪的事情。不过有点太可恶的人。 在三层中,查询占用服务器很高的CPU,怎样优化? 你开发软件一般用哪些第三方控件? 有一段代码兄弟们帮忙看看哈~~小弟多谢了~!~!~PP 关于定义函数的参数问题 帮帮忙 delphi 6打开文件时的问题 无耻的所谓的大公司 delphi7 dbgrideh表格中 如果字段数量值为零, 怎么把 dbgrideh单元格颜色设置为红色啊?
procedure CropBitmap(InBitmap, OutBitMap : TBitmap; X, Y, W, H :Integer);
begin
OutBitMap.PixelFormat := InBitmap.PixelFormat;
OutBitMap.Width := W;
OutBitMap.Height := H;
BitBlt(OutBitMap.Canvas.Handle, 0, 0, W, H, InBitmap.Canvas.Handle, X, Y, SRCCOPY);
end;
//使用方式
Var
Bmp : TBitmap;
begin
Bmp:=TBitmap.Create;
try
CropBitmap(Image1.Picture.Bitmap, Bmp, 10,0, 150, 150);
....
finally
Bmp.Free;
end;
end;
把bmp1的值给bmp2
1、将图读入Image1;
2、Image2,无图,与Image1重叠;鼠标Image2模拟获取截图的左上点,右下点位置数据:XX1,YY1,XX2,YY2;
3、新图分辨率ComboBox1.ItemIndex
4、新的图,以ImagePath+TempName+'.bmp'文件名另存;
5、ChangeImageSize;显示截图代码如下:
procedure TSeleteImageFrm.Button2Click(Sender: TObject);
var MyRect, NewRect: TRect;
Bmp,NewBmp: TBitmap;
s1,s2:string;
W,H,WW,WH:integer;
k,k1:double;
begin
TempName:=Edit1.text; // 文件名
if (XX2=0) or (YY2=0) then
begin
XX1:=0;
YY1:=0;
XX2:=Image1.Picture.Graphic.Width;
YY2:=Image1.Picture.Graphic.Height;
end;
Bmp:=TBitmap.Create;
NewBmp:=TBitmap.Create;
MyRect := Rect(XX1,YY1,XX2,YY2);
NewRect := Rect(0,0,XX2-XX1, YY2-YY1);
Bmp.Width:=XX2-XX1;
Bmp.Height:=YY2-YY1;
Bmp.Canvas.CopyRect(NewRect,Image2.Canvas, MyRect);
case ComboBox1.ItemIndex of
0: ChangeAnyPixels(Bmp,NewBmp,100,133);
1: ChangeAnyPixels(Bmp,NewBmp,150,200);
2: ChangeAnyPixels(Bmp,NewBmp,200,266);
3: ChangeAnyPixels(Bmp,NewBmp,225,300);
4: ChangeAnyPixels(Bmp,NewBmp,300,400);
end;
NewBMP.SaveToFile(ImagePath+TempName+'.bmp');
Image1.Picture.Assign(BMP);
Image2.Picture.Assign(BMP);
ChangeImageSize;
XX2:=0;
YY2:=0;
Bmp.Free;
NewBmp.Free;
end;
API Bitbl等都可以