我写了这个函数来产生一个BMP的水平镜像图:
function MirrorBmp(const SBmp: TBitmap): TBitmap;
var
RBmp: TBitmap;
I: Integer;
begin
Result:=nil;
RBmp:=TBitmap.Create;
RBmp.Width:=Sbmp.Width;
RBmp.Height:=Sbmp.Height;
if (SBmp<>nil) then
begin
for I:=0 to SBmp.Width do
SBmp.Canvas.CopyRect(Rect(SBmp.Width-I,0,SBmp.Width-I,SBmp.Height),RBmp.Canvas,Rect(I,0,I,Sbmp.Height));
Result:=RBmp;
end;
end;
函数的调用:
procedure TfrmMain.Button1Click(Sender: TObject);
var
SBmp: TBitmap;
DBmp: TBitmap;
begin
SBmp:=TBitmap.Create;
DBmp:=TBitmap.Create;
SBmp.LoadFromFile('C:\1.bmp');
DBmp:=MirrorBmp(SBmp);
if (DBmp<>nil) then
DBmp.SaveToFile('C:\2.bmp');
end;结果发现C:\2.bmp总是一张空白图,问题出在哪里啊?
function MirrorBmp(const SBmp: TBitmap): TBitmap;
var
RBmp: TBitmap;
I: Integer;
begin
Result:=nil;
RBmp:=TBitmap.Create;
RBmp.Width:=Sbmp.Width;
RBmp.Height:=Sbmp.Height;
if (SBmp<>nil) then
begin
for I:=0 to SBmp.Width do
SBmp.Canvas.CopyRect(Rect(SBmp.Width-I,0,SBmp.Width-I,SBmp.Height),RBmp.Canvas,Rect(I,0,I,Sbmp.Height));
Result:=RBmp;
end;
end;
函数的调用:
procedure TfrmMain.Button1Click(Sender: TObject);
var
SBmp: TBitmap;
DBmp: TBitmap;
begin
SBmp:=TBitmap.Create;
DBmp:=TBitmap.Create;
SBmp.LoadFromFile('C:\1.bmp');
DBmp:=MirrorBmp(SBmp);
if (DBmp<>nil) then
DBmp.SaveToFile('C:\2.bmp');
end;结果发现C:\2.bmp总是一张空白图,问题出在哪里啊?
解决方案 »
- 跨进程访问 有第三方控件
- 字符随机大小转换
- keyup事件问题
- 一个经典的问题讨论!数据库设计到底要不要冗余!
- 关于 Application.CreateForm....
- 有没有用PowerTCP开发过snmp
- +++++++奇怪的问题,存储过程第一次运行可以,第二次就出错了++++++在线等待(up有分)
- 将主程序中的数据库查询结果或者query对象本身传递给DLL
- 两个关于组件的问题(updown与listview)..100分相送..!! 想象力高的进~难度偏大.
- 怎样捕捉数据库在插入数据是的异常!!!!!
- dephi 如何将一个数据集Adoquery的数据打印在fastreport上
- 周末了,散一百分,祝各位周末愉快!
function MirrorBmp(const SBmp: TBitmap): TBitmap;
var
I: Integer;
RBmp: TBitmap;
begin
Result:=nil;
RBmp:=TBitmap.Create;
RBmp.Width:=Sbmp.Width;
RBmp.Height:=Sbmp.Height;
if (SBmp <> nil) then
begin
for I:=0 to SBmp.Width do
RBmp.Canvas.CopyRect(Rect(I,0,I + 1,Sbmp.Height), SBmp.Canvas,Rect(SBmp.Width-I,0,SBmp.Width-I + 1,SBmp.Height)); end;
Result:=RBmp;
end;procedure TForm1.Button1Click(Sender: TObject);
var
SBmp: TBitmap;
DBmp: TBitmap;
begin
SBmp:=TBitmap.Create;
// DBmp:=TBitmap.Create;
SBmp.LoadFromFile('C:\1.bmp');
DBmp:=MirrorBmp(SBmp);
if (DBmp <> nil) then
DBmp.SaveToFile('C:\2.bmp');
SBmp.Free;
DBmp.Free;
end;