我的屏保程序,图片如何显示为正常?!(50)

楚辞

Unregistered / Unconfirmed
GUEST, unregistred user!
弄了个简单屏保程序,把我孩子的图片放了进去,可是在编译执行后,孩子的图片显示超过液晶显示器的范围.看不到孩子的全貌.而在我的文件夹里用"画图"打开看,挺好的.能看到孩子全貌.请问使用什么方法可以把照片显示正常.(JPG格式)代码如下: unit MainUnit;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, JPEG;var MainForm: TMainForm; AppPath: String; i: Integer;const sCount= 9; //设置屏保图片总数implementationuses PWFormUnit;{$R *.DFM}procedure TMainForm.Timer1Timer(Sender: TObject); //设置屏保图片循环begin if i< sCount then begin i:= i+ 1; Image1.Picture.LoadFromFile(AppPath+ IntToStr(i)+ '.jpg'); //读取屏保图片 end else i:= 0;end;procedure TMainForm.FormCreate(Sender: TObject);begin i:= 0; AppPath:= ExtractFilePath(ParamStr(0)); Image1.Picture.LoadFromFile(AppPath+ '3.jpg'); ShowCursor(False); //隐藏鼠标end;procedure TMainForm.Image1Click(Sender: TObject);begin Application.CreateForm(TPWForm, PWForm); PWForm.ShowModal; PWForm.Free; ShowCurSor(True); //显示鼠标end;procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);begin Application.CreateForm(TPWForm, PWForm); PWForm.ShowModal; PWForm.Free; ShowCurSor(True);end;procedure TMainForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if(Key=VK_F4) and ([ssAlt]=shift) then //屏蔽Alt+F4键让程序不能被关闭 Key:=0;end;unit PWFormUnit;uses MainUnit;{$R *.DFM}procedure TPWForm.Button1Click(Sender: TObject);begin if Edit1.Text= 'wwei656' then MainForm.Close else ShowMessage('请输入正确的密码!');end;procedure TPWForm.Button2Click(Sender: TObject);begin PWForm.Close; ShowCurSor(False); //隐藏鼠标end;procedure TPWForm.Edit1KeyPress(Sender: TObject; var Key: Char);begin if Key= Chr(13) then if Edit1.Text= 'wwei656' then MainForm.Close else ShowMessage('请输入正确的密码!');end;
 
方法1:image的Stretch属性设为true;方法2:建立一个Tbitmap,用bitmap的Assign,将jpg转为bitmap,然后用下面的函数将图片大小调整到你的屏幕的大小;//调整大小function changsize(bmp:Tbitmap;w,h:integer):Tbitmap;var bm1:Tbitmap;begin application.ProcessMessages; bm1:=Tbitmap.Create; bm1.PixelFormat := pf24bit; bmp.PixelFormat := pf24bit; bm1.Width:=w; bm1.Height:=h; SetStretchBltMode(bm1.Canvas.Handle, HalfTone); Stretchblt(bm1.Canvas.Handle, 0, 0, w, h, bmp.Canvas.Handle, 0, 0, bmp.width,bmp.Height, SRCCOPY); result:=bm1;end;方法3:如果想要很好的视觉效果,请了解GDI相关知识...
 
Image1.Picture.LoadFromFile(AppPath+ IntToStr(i)+ '.jpg'); //读取屏保图片//加了下面这句,不行Image1.AutoSize:=false;
 
Stretch是拉缩属性..autosize没用...你的图片太大的原因...先image1.Stretch:=true;然后再load...
 
用先image1.Stretch:=true;实现了.第二个方法,建立一个Tbitmap,用bitmap的Assign,将jpg转为bitmap,这个不会,所说的建立Tbitmap是不是指放一个Tbitmap控件俺的QQ:328844156,有空多交流
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
574
import
I
I
回复
0
查看
702
import
I
顶部