看很多资料都要做什么资源文件,如果做资源文件的话是不是又要为这个鼠标形状多生成一个文件?那感觉就有点小题大作了,只是想在程序运行过程中将鼠标变成一个圆形,所以认为应该可以自画一个圆,并将它作为鼠标形状,能做到吗?

解决方案 »

  1.   

    可以,你用一些专门的软件画个圆,保存为鼠标的图标文件。然后放到资源里面去,编译后是在exe里面的,不会多一个文件的,使用的时候自己用函数从资源里面读取就行了
      

  2.   

    const crGuaDX  = 1;String DXCursorFile = 'c:\DXCursor.CUR';//自己事先做好一天图标文件
    if ( FileExists(DXCursorFile) )  //存在地线使用的图标文件
    begin
      Screen.Cursors[crGuaDX] = LoadCursorFromFile(DXCursorFile);
    end;//应用
    Screen.Cursor = TCursor(crGuaDX);
      

  3.   

    用CreateCursor建立鼠标位图,最后2个参数就是指向颜色RGB信息的指针
    然后SetCursor显示鼠标
      

  4.   

    procedure   BmpToIco(bmp,   ico:   string);   //bmp和ico是文件名   
    var   
        IconSizeX   :   integer;   
        IconSizeY   :   integer;   
        myBmp   :   TBitmap;   
        AndMask   :   TBitmap;   
        XOrMask   :   TBitmap;   
        IconInfo   :   TIconInfo;   
        Icon   :   TIcon;   
    begin   
        IconSizeX   :=   GetSystemMetrics(SM_CXICON);   
        IconSizeY   :=   GetSystemMetrics(SM_CYICON);       myBmp   :=   TBitmap.Create;   
        myBmp.LoadFromFile(bmp);       AndMask   :=   TBitmap.Create;   
        AndMask.Width   :=   IconSizeX;   
        AndMask.Height   :=   IconSizeY;   
        AndMask.Canvas.Brush.Color   :=   clBlack;   
        AndMask.Canvas.Rectangle(0,   0,   IconSizeX,   IconSizeY);       XOrMask   :=   TBitmap.Create;   
        XOrMask.Width   :=   IconSizeX;   
        XOrMask.Height   :=   IconSizeY;   
        StretchBlt(XorMask.Canvas.Handle,   0,   0,   IconSizeX,   IconSizeY,   
        myBmp.Canvas.Handle,   0,   0,   myBmp.Width,   myBmp.Height,   SRCCOPY);       Icon   :=   TIcon.Create; 
        IconInfo.fIcon   :=   true;   
        IconInfo.xHotspot   :=   0;   
        IconInfo.yHotspot   :=   0;   
        IconInfo.hbmMask   :=   AndMask.Handle;   
        IconInfo.hbmColor   :=   XOrMask.Handle;   
        Icon.Handle   :=   CreateIconIndirect(IconInfo);       AndMask.Free;   
        XOrMask.Free;   
        myBmp.Free;       Icon.SaveToFile(ico);   
        Icon.Free;   
    end;