我用以下笨办法可以实现:
=========================
procedure TForm1.Button1Click(Sender: TObject);
var
jp : TJpegImage;
begin
jp := TJpegImage.Create;
try
jp.Assign(image1.Picture.Bitmap);
jp.SaveToFile('c:\temp.jpg');
image2.Picture.Assign(jp);
TJPEGImage(Image2.Picture.Graphic).grayscale := true;
image1.Picture.Graphic.Assign(image2.Picture.Graphic);
finally
jp.Free;
end;
end;
//但一旦不执行 jp.SaveToFile('c:\temp.jpg');这句,则不成,困惑...
=========================
procedure TForm1.Button1Click(Sender: TObject);
var
jp : TJpegImage;
begin
jp := TJpegImage.Create;
try
jp.Assign(image1.Picture.Bitmap);
jp.SaveToFile('c:\temp.jpg');
image2.Picture.Assign(jp);
TJPEGImage(Image2.Picture.Graphic).grayscale := true;
image1.Picture.Graphic.Assign(image2.Picture.Graphic);
finally
jp.Free;
end;
end;
//但一旦不执行 jp.SaveToFile('c:\temp.jpg');这句,则不成,困惑...
解决方案 »
- 关于寻找窗口findwindow
- DLL中用了STRING类型,退出程序时就会报Invalid Pointer Operator!
- 急~~~一个关于日程安排的问题.(access数据库)
- 【醒目】发布农历控件DateTimePicker更新版
- 请问各位高手一个问题?可能有点难度高手请进!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- decision cube 问题!!!!!!!!
- 呵呵,大家帮我猜一条短信,谢谢。
- 我在书中看到一句程序不明?请大家帮忙!!! a为int64型, 为什么会出现a:=a or (1 shl I)??
- 急,数组赋值问题!!!在线等待!!
- [提问]Delphi中是否可以像.Net中的Process.Exited一样捕获指定进程的退出事件?
- 高手都到那里去了???????
- 我有一个函数运行了很长时间,程序失去响应,怎么办?
procedure ConvertToGrayGraphic(var Bmp: TBitmap);
var
p :PByteArray;
Gray,x,y :Integer;
begin
for y:=0 to Bmp.Height-1 do
begin
p:=Bmp.scanline[y];
for x:=0 to Bmp.Width-1 do
begin
Gray:=Round(p[x*3+2]*0.3+p[x*3+1]*0.59+p[x*3]*0.11);//转换公式
p[x*3]:=Gray;
p[x*3+1]:=Gray;
p[x*3+2]:=Gray;
end;
end;
end;