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.


  • Administrator

    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


Anmelden zum Antworten