作者:胡印鉴_473 | 来源:互联网 | 2023-09-04 19:17
image组件里有个stretch属性,可以让图片拉伸铺满image组件的大小。不过那样子的话,如果图像比较小,拉伸以后分辨率太低,很多象素点都看到了。如何才能实现平铺的效果?就跟Wi
image组件里有个stretch属性,可以让图片拉伸铺满image组件的大小。
不过那样子的话,如果图像比较小,拉伸以后分辨率太低,很多象素点都看到了。
如何才能实现平铺的效果?就跟Windows的墙纸或做网页时的背景平铺效果???
十分感谢!!!!
12 个解决方案
呵呵,可是现在我需要的功能就是要平铺呀,不要居中。
楼上的说的对,用PHOTOSHOP处理以后,再加到image里面
来吧,我帮你写一个.
procedure TForm1.Button1Click(Sender: TObject);
var
Bm:TBitmap;
x,y,w,h:longint;
begin
//如果你的Image1中有图片的话就把它清空
Image1.Picture:=nil;
//开始平铺
try
Bm:=TBitmap.Create;
Bm.LoadFromFile('c:\1.bmp');//图片在此修改
with Bm do
begin
w:=width;
h:=height;
end;
y:=0;
while y begin
x:=0;
while x begin
image1.Canvas.Draw(x,y,Bm);
inc(x,w);
end;
inc(y,h);
end;
finally
Bm.Free;
end;
end;
image的属性中
Alien:alclient;
Stretch:true;
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Menus, StdCtrls;
const
CM_RESTORE=WM_USER+$1000;
type
TFrm_main = class(TForm)
private
{ Private declarations }
//装载底图 -----
FClientInstance,FPrevClientProc : TFarProc;
PROCEDURE ClientWndProc(VAR Message: TMessage);
//---------------
public
{ Public declarations }
end;
var
Frm_main: TFrm_main;
implementation
{$R *.dfm}
{ TFrm_main }
procedure TFrm_main.ClientWndProc(var Message: TMessage);
VAR
MyDC : hDC;
Ro, Co : Word;
begin
with Message do
case Msg of
WM_ERASEBKGND:
begin
MyDC := TWMEraseBkGnd(Message).DC;
FOR Ro := 0 TO ClientHeight DIV Image1.Picture.Height DO
FOR Co := 0 TO ClientWIDTH DIV Image1.Picture.Width DO
BitBlt(MyDC, Co*Image1.Picture.Width, Ro*Image1.Picture.Height,
Image1.Picture.Width, Image1.Picture.Height,
Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
Result := 1;
end;
else
Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam, lParam);
end;
end;
procedure TFrm_main.FormCreate(Sender: TObject);
begin
//====================================装载底图
FClientInstance := MakeObjectInstance(ClientWndProc);
FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance));
end;
以上是参考别人的代码,呵呵
但是平铺效果并不好呀,图片都变形了,你可以设置图片尺寸就可以了吧
zdcnow(磁效应)的效果很好!
seekmydoom(我的末日)的代码没有尝试。
结贴。