Delphi 如何在Timage上显示光标图像?

gijlo24d  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(146)

我想在Timage上显示load .cur文件。显示为图像。而不是setcursor。
我尝试过

var ico:= TIcon.Create;
    var bm:=Tbitmap.Create;
    ico.LoadFromResourceName(Hinstance,'spy_cur');
    ico.AssignTo(bm);

    //Panel6.Brush.Bitmap:=bm;   do not work.
    //Image2.Picture.Bitmap:=bm;  do not work.
    //DrawIconEx(image2.Canvas.Handle,0,0,ico.Handle,32,32,0,0,DI_Normal); do not work.

字符串
怎么做?
cur文件不是ico文件. Image2.Picture.Bitmap:=bm; image2.Picture.Graphic:=ico;不是工作。

eulz3vhy

eulz3vhy1#

TImage组件有一个Picture属性,它是对TPicture对象的引用,该对象包含许多处理图形的方法。
其中最有用的方法之一是Assign,它允许您将任何兼容的Graphic对象分配给TPicture类。分配方法确定您试图自动分配的图形。
因此,在您的示例中,在TImage上显示图标的代码如下所示:

ico:= TIcon.Create;
ico.LoadFromResourceName(Hinstance,'spy_cur');
Image1.Picture.Assign(ico);

字符串
编辑:如果你有图标存储为单独的文件,你甚至可以用Image1.Picture.LoadFromFile('MyIconFile.ico');将它们加载到你的图像中。所以在这种情况下不需要使用TIcon类。
PS:如果你想显示一些其他的图像类型,如PNG或JPEG,你可能需要添加相应的单元来处理这些图像类型到使用部分。VCL.Graphics单元包含一些可用图像类型所需的代码。
是的,有第三方库,您可以添加到您的程序,以添加对更多图像类型的支持。
EDIT2:我忽略了你试图显示光标资源。为了将光标资源加载到Icon,您需要使用类似tihs的代码:

var ico: TIcon;
var HCursor: THandle;

ico := TIcon.Create;
HCursor := LoadCursor(hInstance,'spy_cur');
//Since LoadCursor does not raise any Exception wee need to check 
//if cursor was loaded by our self and if not retrieve the last 
//error message
if HCursor = 0 then
begin
  MessageDlg(SysErrorMessage(GetLastError),mtError,[mbOK],0);
end;
ico.Handle := HCursor;
Image1.Picture.Assign(ico);


PS:当我在一个新的 Delphi 应用程序上尝试这个时,我得到了一个错误,即无法找到特定的资源。因此我猜您可能正在向应用程序添加自定义游标资源。

相关问题