Autor Beitrag
mtin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177

Win XP SP2
BDS2006 Enterprise
BeitragVerfasst: Mo 01.05.06 12:35 
hab hier mal schnell einen Beispielcode zusammengesetzt, als bild wird eine Linie von links oben nach rechts unten gezeichnet. Diese soll dann als Cursor gesetzt werden. Dazu wird noch eine Maske angelegt, doch egal wie rum ich die Maske auch mache, als Cursor kommt immer das raus was ich GENAU NICHT WOLLTE, also nich der weißte Hintergrund wird transparent sondern die Linie...egal wie rum die Maske ist!

Wer so nett is un sich das mal anschaut, einfach einen Button aufs Formular und dann doppelklick auf den Button und den gesamten Code mit diesem hier ersetzen!
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure setcursor(const bm1,bm2:TBitmap;x,y:integer);
  var h:      THandle;
      Iinfo:  TIconInfo;
begin
  try
    Iinfo.fIcon:=true;
    Iinfo.xHotspot:=x;
    Iinfo.yHotspot:=y;
    Iinfo.hbmMask:=bm2.Handle;
    Iinfo.hbmColor:=bm1.Handle;
    Screen.Cursors[1]:=CreateIconIndirect(Iinfo);
    Form1.Cursor:=1;
    Screen.Cursor:=1;
  finally 
    bm2.free;
    bm1.free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var bmp,mask:TBitmap;
begin
bmp:=TBitmap.Create;
mask:=TBitmap.Create;
bmp.SetSize(50,50);
mask.SetSize(50,50);

bmp.Canvas.MoveTo(0,0);
bmp.Canvas.LineTo(49,49);

mask.Monochrome:=true;
mask.Canvas.Pen.Color:=clblack;
mask.Canvas.Brush.Color:=clblack;
//mask.Canvas.Pen.Color:=clwhite;
//mask.Canvas.Brush.Color:=clwhite;
mask.Canvas.Rectangle(0,0,50,50);

mask.Canvas.Pen.Color:=clwhite;
//mask.Canvas.Pen.Color:=clblack;
mask.Canvas.MoveTo(0,0);
mask.Canvas.LineTo(49,49);

setcursor(bmp,mask,0,0);

end;

end.

Die auskommentierten Zeilen machen die Maske dann genau andersrum, allerdings ändert sich da auch nichts...ich hoffe mal mir kann jemand helfen!