![]() |
Re: Cursor aus BITMAP-Ressourcenname laden
Was mache ich, wenn ich keine Maske brauche? Muss ich dann einfach das Ding nicht laden oder wie?
|
Re: Cursor aus BITMAP-Ressourcenname laden
Also ich kann den Cursor prima in eine Datei speichern, aber ihn mit Screen.Cursor:=id; oder SetCursor(Screen.Cursors[id]); zu setzen, klappt einfach nicht. Es bleibt weiterhin bei dem Default-Cursor.
|
Re: Cursor aus BITMAP-Ressourcenname laden
*push*
|
Re: Cursor aus BITMAP-Ressourcenname laden
Zitat:
Zitat:
Delphi-Quellcode:
implementation
{$R *.dfm} const crMyCursor = 1; var IconInfo : TIconInfo; procedure TForm1.Button1Click(Sender: TObject) ; var bmpMask, bmpColor : TBitmap; i: Integer; begin bmpMask := TBitmap.Create; bmpColor := TBitmap.Create; With bmpColor do begin Width := 31; Height := 31; Canvas.Brush.Color := clWhite; Canvas.Pen.Color := clRed; Canvas.Ellipse(0,0,Width,Height); end; With bmpMask do begin Width := 31; Height := 31; Canvas.Brush.Color := clBlack; Canvas.FillRect(RECT(0,0,Width,Height)); end; // oder per Datei (oder auch aus der Resource) laden // bmpColor.LoadFromFile('..\TestMapCur.bmp'); // bmpMask.LoadFromFile('..\TestMaskCur.bmp'); // Icon erstellen With IconInfo do begin fIcon := False; // kein Icon sondern Cursor xHotspot := 16; yHotspot := 16; hbmMask := bmpMask.Handle; hbmColor := bmpColor.Handle; end; // Cursor in Cursorliste speichern Screen.Cursors[crMyCursor] := CreateIconIndirect(iconInfo) ; // Bitmaps freigeben bmpMask.Free; bmpColor.Free; // Cursor allen Elementen auf der Form zuweisen Screen.Cursor := crMyCursor; for i := 0 to Form1.ControlCount -1 do Form1.Controls[i].Cursor := crMyCursor; end; end. |
Re: Cursor aus BITMAP-Ressourcenname laden
Guten Tag,
vorerst: Tut mir ja leid, dass ich den alten Thread auskrame, aber ich ich komm einfach nicht drauf woran das Problem hier liegt. also: Den Cursor zu laden und anzuzeigen funktioniert schonmal nach dem obigen prinzip. Jetzt wollte ich aber alle Pixel, die auf die Farbe 'clFuchsia' gestellt sind transparent haben. Zuerst so getestet: (siehe Post #14)
Delphi-Quellcode:
Funktioniert einwandfrei. (Alle 'clWhite'-Pixel werden transparent dargestellt werden)
begin
With bmpColor do begin Width := 31; Height := 31; Canvas.Brush.Color := clWhite; Canvas.Pen.Color := clRed; Canvas.Ellipse(0,0,Width,Height); end; With bmpMask do begin Width := 31; Height := 31; Canvas.Brush.Color := clBlack; Canvas.FillRect(RECT(0,0,Width,Height)); end; end; Jetzt habe ich mir den Code ein wenig umgeformt und alle 'clFuchsia'-Pixel in 'clWhite' umgewandelt:
Delphi-Quellcode:
So anstatt die Weißen Stellen jetzt transparent anzuzeigen, werden diese jetzt ganz plötzlich umgekehrt transparent dargestellt. (zB: Schwarz <-> Weiß) :gruebel:
begin
bmpColor.LoadFromFile(FileName); for i := 0 to bmpColor.Width - 1 do for j := 0 to bmpColor.Height - 1 do case bmpColor.Canvas.Pixels[i,j] of clWhite: bmpColor.Canvas.Pixels[i,j] := clWhite-1; //Damit nicht ungewollte Stellen transparent werden clFuchsia: bmpColor.Canvas.Pixels[i,j] := clWhite; //Soll transparent werden end; With bmpMask do begin Width := bmpColor.Width; Height := bmpColor.Height; Canvas.Brush.Color := clBlack; Canvas.FillRect(RECT(0,0,Width,Height)); end; end; Ich kenne mich noch nicht wirklich mit Masken aus und habe auch kein passendes Tutorial gefunden. :duck: Kann mir bitte einer helfen das hinzubekommen? (zumindestens kurz erklären warum das so ist?) Dankeschön schonmal im Vorraus. Edit: hmm, ok anscheinend gibt es irgendwelche Farbkombinationen, von denen ich nichts weiß... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz