Eigenen Cursor implementieren
-
Hey,
für mein Spiel bräuchte ich einen Cursor der aussieht wie ein Hammer.Im Internet habe ich folgendes gefunden:
this.Cursor = new Cursor(GetType(), "Cursor1.cur");
Leider funktioniert das bei mir nicht...
Da ich Visual C# 2010 benutze, bin ich auf Projekt/NeuesElement/Cursordatei.
Dort habe ich mein "Hammersymbol" eingesetzt und unter dem Namen "Hammer.cur" gespeichert.Mein Code sieht dann wie folgt aus:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Projekt { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.Cursor = new Cursor(GetType(), "Hammer.cur"); } } }
Habe vieles probiert; Hat aber leider nichts funktioniert.
Vielen Dank für die HIlfe.
-
Hallo,
schau mal in deinem Projekt in den Ordner "Properties": dort müßte es eine "Resources.Designer.cs" geben, in dem es eine Eigenschaft für deinen Cursor geben sollte.
Dann sollte folgendes funktionieren:this.Cursor = new Cursor(Properties.Resources.Hammer);
P.S. Bei deinem Code stimmt "GetType()" nicht, da du ja den Typ benötigst, unter dem dein Cursor gespeichert ist, d.h. "typeof(Properties.Resources)".
-
Hm.
Irgendiwe funktioniert das nicht ganz.
Code:this.Cursor = new Cursor(Properties.Resources.Hammer, "Hammer.cur");
Fehler:
Fehler 1: "Projekt.Properties.Resources" enthält keine Definition für "Hammer".
-
Hallo,
ach so, du hast einfach eine Cursor-Datei zu deinem Projekt hinzugefügt.
Einfacher ist es, wenn du sie zu deinen Projekt-Ressourcen hinzufügst (wie schon geschrieben unter "Properties.Resources").Falls du doch die Cursor-Datei direkt ansprechen willst, so mußt du bei dessen Eigenschaft "CopyToOutputDir" auf "Copy if newer" stellen, so daß sie beim Kompilieren ins Ausgabeverzeichnis kopiert wird (z.B. "bin/debug") und dann kannst du sie mittels
string path = Path.Combine(Application.StartupPath, "Hammer.cur"); this.Cursor = new Cursor(path);
verwenden.
P.S: auf deutsch müßte die Eigenschaft "Ins Ausgabeverzeichnis kopieren" o.ä. heißen (ich habe hier nur das englische VS)...
-
Hm.
Ich hab das jetzt mal mit den Ressourcen gemacht.
Habe eine neue Ressourcendatei erstellt.this.Cursor = new Cursor(typeof(Properties.Resources.Fadenkreuz), "Fadenkreuz.resx"); Fehler 1 "Zombie.Properties.Resources.Fadenkreuz" ist ein(e) "Eigenschaft", wird aber wie ein(e) "Typ" verwendet.
Funktioniert irgendwie nicht..
-
Probierst du eigentlich nur wild rum, oder versuchst du zu verstehen, was ich geschrieben habe?
Ansonsten schau dir noch mal genau die Konstruktoren der Cursor-Klasse an...
-
Ah. habs hinbekommen. Danke
Weißt du zufällig wie man bei der .cur datei den Hintergrund farblos machen kann.
Weil momentan ist um meine Maus immer ein weißes Kästchen herum.
-
Mit "farblos" meinst du "Transparenter Hintergrund"
Nimm dir das Bildbearbeitungsprogramm deiner Wahl (ich empfehle Paint.NET) und bearbeite die Cursor-Datei so, dass sie einen transparenten Hintergrund bekommt.
-
Mit "farblos" meinst du "Transparenter Hintergrund"
Nimm dir das Bildbearbeitungsprogramm deiner Wahl (ich empfehle Paint.NET) und bearbeite die Cursor-Datei so, dass sie einen transparenten Hintergrund bekommt.
Ja genau das meine ich:
Aber man kann in eine Cursordatei kein Bild einfügen.. oder geht das?
Weil ich konnte immer nur etwas zeichnen.
-
Sorry, ich verstehe dich nicht ganz. Du öffnest deine *.cur-Datei mit einem Bildbearbeitungsprogramm und bearbeitest die Datei so, dass der Hintergrund transparent wird. Wenn du nicht weißt, wie man die Datei so bearbeitet, dann google einfach "<name des bildbearbeitungsprogramms> transparenz" oder sowas
-
Ja das weiß ich schon
Aber die Cursor-datei geht nicht mit einem bildbearbeitungsprogramm öffnen.
-
Dann such dir ein Programm, welches *.cur oder *.ico Dateien bearbeiten kann. VS2010 hat ja sogar selber einen 8 Bit Editor, wenn ich mich recht erinnere. Muss man das wirklich erwähnen?
Grüssli