Laden...
L
Let it Burn
myCSharp.de - Member
6
Themen
21
Beiträge
Letzte Aktivität
vor 11 Jahren
Dabei seit
27.02.2013
Beruf
Schüler
Erstellt vor 11 Jahren

Danke für den Link herbivore. Da war ich mit den Bool Variable schonmal richtig.

Hat jemand noch eine Lösung für mein zweites Problem?

Erstellt vor 11 Jahren

Ok, das war wirklich nicht weit gedacht, Entschuldigung...

Ich habe es ausprobiert und festgestellt, dass mouse_event auch die vom Hook abgefangen wird.

Das bedeutet leider, dass mein Timer schon gestoppt wird, wenn ich MouseUp für die simulierten Klicks auslöse.
Dann muss ich irgendwie noch was einbauen, um zu prüfen, ob MouseUp vom Programm ausgelöst wird. Kann ich das vielleicht mit einem Bool Wert machen, oder würde das zu Verzögerungen führen?
Ich weiß, dass ich auch noch an die Threadsicherheit denken muss.

Wenn noch jemand Ideen hat, würde ich mich über Anregungen freuen =)

Grüße
Let it Burn

Edit: Ich möchte, wenn AutoKlicken deaktiviert ist, bei Mausklick ein gedrückte Taste simulieren.
dazu benutze ich im MouseDown Event die SendMessage Funktion, allerdings wird die Taste nicht mehr losgelassen:

        void m_MouseHookManager_MouseUp(object sender, MouseEventArgs e)
        {
            [...]
            else if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                SendMessage(mainhandle, WM_KEYUP, (int)Keys.P, 0);
            }
        }


        void m_MouseHookManager_MouseDown(object sender, MouseEventArgs e)
        {
           [...]
            else if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                SendMessage(mainhandle, WM_KEYDOWN, (int)Keys.P, 0);
            }
        }

Erstellt vor 11 Jahren

Danke für deine Antwort 👍.
Werd ich gleich mal ausprobieren 😁

Ich sende die Mausklicks mit der mouse_event Funktion aus der WinApi. Wird das vom Hook auch als Klick abgefangen?

Erstellt vor 11 Jahren

Hallo,
ich möchte, wenn ich die Maustaste gedrückt halte ein Dauerklicken an das Programm senden.
Für den MouseHook benutze ich den GlobalMouseKeyHook.
Allerdings weißt ich jetzt nicht wie ich das löse, dass nur bei gedrückter Maustaste Klicks gesendet werden.
Kann mir da jemand einen Tipp geben?

Gruß
Let it Burn

Erstellt vor 11 Jahren

Also der Ursprungspunkt bleibt links oben und es gibt keine Fehlermeldung. Der Converter wird durchlaufen.

Das MultiValueBinding deshalb, weil ich das so immer in Beispielen gesehen habe und ich außerdem noch eine Möglichkeit zum verschieben des Canvas Inhalts einbauen möchte.

Erstellt vor 11 Jahren

Hallo,
ich bin gerade dabei den Ursprungspunkt eines canvas durch Binding immer in der Mitte zu halten.
Leider funktioniert mein Code nicht:

    <Canvas x:Name="canvas_spline" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5">
        <Line X1="0" X2="100" Y1="0" Y2="0" Stroke="Black" StrokeThickness="2"/>
        <Canvas.RenderTransform>
            <TransformGroup>
                <TranslateTransform>
                    <TranslateTransform.X>
                        <MultiBinding Converter="{StaticResource converter}">
                            <Binding ElementName="canvas_spline" Path="ActualWidth"/>
                        </MultiBinding>
                    </TranslateTransform.X>
                    <TranslateTransform.Y>
                        <MultiBinding Converter="{StaticResource converter}">
                            <Binding ElementName="canvas_spline" Path="ActualHeight"/>
                        </MultiBinding>
                    </TranslateTransform.Y>
                </TranslateTransform>
            </TransformGroup>
        </Canvas.RenderTransform>
    </Canvas>

Zusätzlich habe ich noch folgende Converter Klasse:

    public class TranslateTransformConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            double v = (double)values[0];
            double result = v / 2;
            return result;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Was mache ich falsch?

Erstellt vor 12 Jahren

Ich habe nicht verlangt verlangt, dass mir hier ein fertiger Code bereitgestellt wird.
Außerdem lässt sich doch alles, was im XAML Code steht auch als C# Code definieren.

Es geht mir nur darum eine Kurve anhand eines Point Arrays zu zeichnen.
Es würde mir schon genügen, wenn mir jemand sagen könnte, was für eine Klasse oder Methode ich verwenden könnte. Mir würden schon Schlagwörter genügen.

Außerdem habe ich mir die WPF Grundlagen durchgelesen.
Ich habe nirgendwo ein vollständiges Tutorial gefunden, in dem sich mit zeichnen von Kurven befasst wird.

Edit: Zum Thema WPF vollständig lernen: Ich will doch nur eine einzige kurve zeichnen. Das wäre ja so, als solle ich Autofahren lernen um überhaupt mit dem Fahrrad zu fahren.

Edit2: Mein bisheriger Versuch war auch schon Polyline, allerdings sehe ich vom Zeichnen nichts, also das Control bleibt einfach nur weiß. Hier der Code:

        public void DrawSin(PointCollection points)
        {
            this.RenderTransformOrigin = new System.Windows.Point(this.ActualWidth / 2, this.ActualHeight / 2);
            Polyline pl1 = new Polyline();
            SolidColorBrush br = new SolidColorBrush();
            br.Color = Colors.Black;
            pl1.Stroke = br;
            pl1.StrokeThickness = 2;
            pl1.Points = points;
            canvas1.Children.Add(pl1);
        }
Erstellt vor 12 Jahren

Ich hab mir das mal durchgelesen.
Da wird ja eine Polyline verwendet, also mehrere Linien, die miteinander verknüpft sind. Wenn man bei der Grafik genauer hinschaut hat die Kurve ziemlich viele Ecken.
Geht das nicht sauberer, sodass eine richtige Kurve ohne Ecken und Kanten ensteht?

Erstellt vor 12 Jahren

Hallo,
ich habe eine WinForms Anwednung geschrieben um Sinuskurven aus einer geparsten Funktionsgleichung zu berechnen und darzustellen. Das war auch kein Problem, Array berechnet und dann mit DrawCurve gezeichnet. Allerdings verpixeln die Kurven an ihren Rändern leicht, sodass es unsauber aussieht.
Jetzt habe ich mir gedacht ich könnte in der Winforms ein WPF Control zeichnen und darin die Kruve darstellen. Leider ist WPF grundlegend anders und besitzt keine DrawCurve Methode.

Jetzt zur eigentlichen Frage: Wie kann ich die Kurven in einem WPF Control zeichnen?
Bitte, wenn möglich, nur mit C# Code antworten, da ich mich mit XAML noch nicht wirklich befasst habe.

Ich bin für jede Antwort, die mir helfen kann, dankbar =)

Erstellt vor 12 Jahren

Es geht im Grunde nur um Klassenkameraden, die hätte ich mit meiner Methode schon genug beschäftigt, dass sie keine Lust haben weiter zu probieren.
Würde das gehen, wenn ich mein Programm als DLL kompilier und es es dann entschlüssel und dynamisch einbinde, würde das gehen?