我目前正在使用 lazarus
在 pascal
中制作桌面屏幕截图,屏幕截图可以正常工作,但它只显示桌面的左上角。我将其设置为在 TImage
上显示较小的桌面图像。我尝试使用 MyBitmap.width := Round(370)
和 MyBitmap.Height := Round(240);
但是这些都不起作用。
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, LCLIntf, LCLType;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
MyBitmap : Tbitmap;
ScreenDC: HDC;
begin
try
MyBitmap := TBitmap.Create;
ScreenDC := GetDC(0);
MyBitmap.LoadFromDevice(ScreenDC);
MyBitmap.Width := Round(370);
Mybitmap.Height := Round(240);
ReleaseDC(0, ScreenDC);
Image1.Picture.Bitmap.Assign(MyBitmap);
finally
MyBitmap.free;
end;
end;
end.
最佳答案
将 LoadFromDevice 替换为
MyBitmap.SetSize(370, 240);
StretchBlt(MyBitmap.Canvas.Handle, //destination HDC
0, 0, 370, 240, // destination size
ScreenDC, //source HDC
0, 0, Screen.Width, Screen.Height, // source size
SrcCopy
);
在现有位图上设置较小的尺寸只会将其裁剪。
您的目的是缩放位图。
关于delphi - 在lazarus或delphi中调整图像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17206156/