unit Jpeg 提供对JPEG的支持。你可以看DEMO 或者是 HELP目录你的具体例子。要操作的话。你转换成BMP处理。要放大。你简单的可以用 COPYRECT () 和 STRETCHDRAW()来实现。
要想放大后效果好些。可以在用BMP。SCANLINE[]方法做一些模糊什么的操作。相关问题论坛帖子不少。自己找吧。
要想放大后效果好些。可以在用BMP。SCANLINE[]方法做一些模糊什么的操作。相关问题论坛帖子不少。自己找吧。
解决方案 »
- 如何调用IE下载?
- 电力系统经验回顾(之一)
- delphi7+access2000环境,adoquery控件能不能同时执行2句sql语句,比如说:
- 用DBGridEh做动态打印,如何把我不想打出来的列的宽度设成0,我手动将列宽隐藏,可是无法彻底的隐藏,总是有那么一点,怎么办?????
- 鬱悶,散分
- 提示“SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确。”
- 我只是想把Word文档显示在窗体上,该怎么做?时间紧,任务急!
- 把Dbgrid控件放在Panel控件上,主要目的是什么?
- 我想从8,10,45,80,2五个数中找出最大数,请问用什么函数?
- delphi 进销存员工权限问题?
- 严重抗议:SydPink(希望不再敲键盘!)insert2003(高级打字员)进来
- 如何在delphi中编程实现动态建立sql server库?很急!
unit asdf;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Jpeg,ExtCtrls, StdCtrls, ExtDlgs;type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
OP: TOpenPictureDialog;
Button1: TButton;
PaintBox1: TPaintBox;
procedure Button1Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
OldP,NewP:TPoint;
procedure JpgToBmp(JpegImageFileName:String; DstBmp: TBitmap);
procedure BmpToJpg(SrcBmp:TBitmap; DstJpgFileName:string);
procedure ZoomInRect(SrcDC: TCanvas;SrcRect:TRect; DstDC: TCanvas;
DstRect: TRect);
public
{ Public declarations } end;var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.JpgToBmp(JpegImageFileName:string; DstBmp: TBitmap);
var
jpg:TJpegImage;
begin
jpg:=TJpegImage.Create;
try
jpg.LoadFromFile(JpegImageFileName);
DstBmp.Assign(Jpg);
finally
jpg.free;
end;end;procedure TForm1.Button1Click(Sender: TObject);
begin
if op.Execute then
begin
image1.Picture.LoadFromFile(op.filename);
JpgToBmp(op.filename,Image1.Picture.Bitmap);
OldP:=Point(10000,10000);
NewP:=OldP;
end;
end;procedure TForm1.BmpToJpg(SrcBmp:TBitmap; DstJpgFileName:string);
var
jpg:TJpegImage;
begin
jpg:=TJpegImage.Create;
try
jpg.Assign(SrcBmp);
jpg.SaveToFile(DstJpgFileName);
finally
jpg.free;
end;end;procedure TForm1.ZoomInRect(SrcDC: TCanvas;SrcRect:TRect; DstDC: TCanvas;
DstRect: TRect);
var
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
try
bmp.width:=SrcRect.right-SrcRect.left;
bmp.height:=SrcRect.Bottom-SrcRect.top;
with bmp.Canvas do
begin
CopyRect(Rect(0,0,bmp.Width,Bmp.Height),SrcDC,SrcRect);
end;
DstDC.StretchDraw(DstRect,bmp);
//DstDC.Draw(0,0,bmp);
finally
bmp.free;
end;
end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if image1.Picture.Bitmap.Empty then exit;
ZoomInRect(Image1.Canvas,Rect(X-20,Y-10,X+20,Y+10),PaintBox1.Canvas,
Rect(0,0,120,60));
with image1.Canvas do
begin
if OldP.x<>10000 then
begin
Brush.Style:=bsClear;
Pen.Mode:=pmNot;
Rectangle(OldP.x-22,OldP.y-12,OldP.x+22,OldP.Y+12);
end;
NewP:=Point(X,Y);
Brush.Style:=bsClear;
Pen.Mode:=pmNot;
Rectangle(Newp.X-22,NewP.Y-12,NewP.X+22,NEwP.Y+12);
OldP:=NewP;
end;
end;end.