我有一张图片demo.bmp,我只需要这图片上的一个部分就行了,但是我不知道我的下面的代码哪里错。请指教高手们。
截取这个图片后就保存到demo12.bmp,procedure TForm1.Button4Click(Sender: TObject);
var
rect1, rect2: trect;
mCanvas: TCanvas;
mHDC: HDC;
bitmap : tbitmap;
begin
try
bitmap := tbitmap.create; bitmap.loadfromfile('d:\我的文档\桌面\test\demo.bmp');
mCanvas := TCanvas.Create; mHDC := GetDC(bitmap.Handle); mCanvas.Handle := mHDC; rect1 := bitmap.Canvas.ClipRect; rect2 := Rect(300, 400, bitmap.Handle , bitmap.Handle ); bitmap.Canvas.CopyRect(rect2,mCanvas,rect1);
bitmap.SaveToFile('d:\我的文档\桌面\test\demo12.bmp'); bitmap.free;
mCanvas.Free;
finally
end;
end;
截取这个图片后就保存到demo12.bmp,procedure TForm1.Button4Click(Sender: TObject);
var
rect1, rect2: trect;
mCanvas: TCanvas;
mHDC: HDC;
bitmap : tbitmap;
begin
try
bitmap := tbitmap.create; bitmap.loadfromfile('d:\我的文档\桌面\test\demo.bmp');
mCanvas := TCanvas.Create; mHDC := GetDC(bitmap.Handle); mCanvas.Handle := mHDC; rect1 := bitmap.Canvas.ClipRect; rect2 := Rect(300, 400, bitmap.Handle , bitmap.Handle ); bitmap.Canvas.CopyRect(rect2,mCanvas,rect1);
bitmap.SaveToFile('d:\我的文档\桌面\test\demo12.bmp'); bitmap.free;
mCanvas.Free;
finally
end;
end;
解决方案 »
- 据说全球只有及少数人能解决这个问题
- 求票据打印技术或者好控件,急,谢谢各位高手了!!
- 用Delphi控制Excel问题,解决即给分,在线等
- 怎样用程序在SQL Server上新建数据库(.MDF文件,不是表),并能使用,因为我想做成象一些程序一样的有‘新建帐套’的工能?3Q
- 急!!!怎样能用table控件通过数据库链来访问oracle数据库?
- 网络电视???
- 请教用什么函数将一文体文件(txt)里的全部文字读到Tmemo中?
- 我想实现由光纤连接的局域网中实现多点对一点的多图片的传送,并保存在目的计算机中,具体情况请看问题的内容,望有经验的高手指点一下,谢谢
- database,datasource,query,dbedit四者的关系是怎样的??
- 数据库加密???????
- 怎样为应用软件中的图片加上超链接?
- 位图填充,如何去掉边框
jpg := TJPEGImage.Create; try
try
jpg.LoadFromFile(photoFile.FileName); //读取源文件
if jpg.Width >= jpg.Height then //计算缩小比例
n := jpg.Width
else
n := jpg.Height;
for k := 1 to maxLoopTime do begin
r1 := (k + 0)/maxLoopTime * n;
r2 := (k + 1)/maxLoopTime * n;
if (Round(r1) < maxImageSize) and (Round(r2) >= maxImageSize) then break;
end; bmp.Width := jpg.Width; //缩小
bmp.Height := jpg.Height;
bmp.PixelFormat := pf24bit; // 设置格式
bmp.Canvas.StretchDraw(Rect(0,0,width, height), jpg);
catch
on EE: Exception do
Application.MessageBox(PAnsiChar('读相片信息失败: ' + EE.Message), 'ePhoto 提示', 48);
end;
finally
bmp.Free;
jpg.Free;
end;
上面是俺的一段代码,区别在于俺设置了 bmp.PixelForm