2013-02-04 51 views
4

我想爲我的應用使用大型倒置十字光標。 但我的代碼使光標的倒轉背景。光標仍然是白色的。德爾福。倒置光標顏色

var 
    IconInfo: TIconInfo; 
    AndMask, Bmp: TBitmap; 
    w, h: Integer; 
begin 
    w := Screen.Width * 2; 
    h := Screen.Height * 2; 

    // Creation And Mask 
    AndMask := TBitmap.Create; 
    AndMask.Monochrome := True; 
    AndMask.Height := h; 
    AndMask.Width := w; 

    // Draw on And Mask 
    AndMask.Canvas.Brush.Color := clWhite; 
    AndMask.Canvas.FillRect(AndMask.Canvas.ClipRect); 

// AndMask.Canvas.Pen.Color := clWhite; 
    AndMask.Canvas.Pen.Width := 3; 
    AndMask.Canvas.MoveTo(w div 2, 0); 
    AndMask.Canvas.LineTo(w div 2, h); 
    AndMask.Canvas.MoveTo(0, h div 2); 
    AndMask.Canvas.LineTo(w, h div 2); 

    {Create the "XOr" mask} 
    Bmp := TBitmap.Create; 
    Bmp.Width := w; 
    Bmp.Height := h; 
    {Draw on the "XOr" mask} 
    Bmp.Canvas.Brush.Color := clWhite; 
    Bmp.Canvas.FillRect(Rect(0, 0, w, h)); 

    IconInfo.fIcon := true; 
    IconInfo.xHotspot := w div 2; 
    IconInfo.yHotspot := h div 2; 
    IconInfo.hbmMask := AndMask.Handle; 
    IconInfo.hbmColor := Bmp.Handle; 

    Screen.Cursors[1]:= CreateIconIndirect(IconInfo); 
    Screen.Cursor:=1; 
end; 

如何使背景透明並使光標反轉?

回答

3
procedure TForm1.Button1Click(Sender: TObject); 

var 
    IconInfo: TIconInfo; 
    AndMask, Bmp: TBitmap; 
    w, h: Integer; 
begin 
    w := Screen.Width * 2; 
    h := Screen.Height * 2; 

    // Creation And Mask 
    AndMask := TBitmap.Create; 
// AndMask.Monochrome := True; 
    AndMask.Height := h; 
    AndMask.Width := w; 

    // Draw on And Mask 
    AndMask.Canvas.Brush.Color := clWhite; 
    AndMask.Canvas.FillRect(AndMask.Canvas.ClipRect); 

    AndMask.Canvas.Pen.Color := clwhite; 
    AndMask.Canvas.Pen.Width := 3; 
    AndMask.Canvas.MoveTo(w div 2, 0); 
    AndMask.Canvas.LineTo(w div 2, h); 
    AndMask.Canvas.MoveTo(0, h div 2); 
    AndMask.Canvas.LineTo(w, h div 2); 

    {Create the "XOr" mask} 
    Bmp := TBitmap.Create; 
    Bmp.Width := w; 
    Bmp.Height := h; 

    {Draw on the "XOr" mask} 
    Bmp.Canvas.Brush.Color := clblack; 
    Bmp.Canvas.FillRect(Rect(0, 0, w, h)); 
    Bmp.Canvas.Pen.Color := clwhite; 
    Bmp.Canvas.Pen.Width := 3; 
    Bmp.Canvas.MoveTo(w div 2, 0); 
    Bmp.Canvas.LineTo(w div 2, h); 
    Bmp.Canvas.MoveTo(0, h div 2); 
    Bmp.Canvas.LineTo(w, h div 2); 


    IconInfo.fIcon := true; 
    IconInfo.xHotspot := w div 2; 
    IconInfo.yHotspot := h div 2; 
    IconInfo.hbmMask := AndMask.Handle; 
    IconInfo.hbmColor := Bmp.Handle; 

    Screen.Cursors[1]:= CreateIconIndirect(IconInfo); 
    Screen.Cursor:=1; 

end; 
+1

對不起,我誤解了...希望我現在得到了你 – bummi