Frage

Ich versuche es zu machen GMap.Net Steuerung von Multitouch aktiviert, Verwendung von integrierten WPF-Ereignissen, aber ich hatte keinen Erfolg.

Ich habe eine Reihe von Artikeln zum Thema Multitouch gefunden Das Und Das eins.In allen von ihnen, ManipulationContainer ist eine Leinwand und darauf platzierte bewegliche Steuerelemente, jedoch in GMap-Ausgabe ManipulationContainer Ist GMapControl und es gibt keine Kontrolle darüber.Wie kann ich es verwenden? e.ManipulationDelta Daten zum Zoomen und Verschieben?

Der GMapControl hat ein Zoom Eigenschaft, die Sie durch Erhöhen oder Verkleinern vergrößern oder verkleinern können.

War es hilfreich?

Lösung

Ein kurzer Blick auf den Code zeigt, dass die GMapControl ist ein ItemsContainer.

Sie sollten in der Lage sein, das neu zu gestalten ItemsPanel Vorlage und liefern Sie die IsManipulationEnabled Grundstück dort:

<g:GMapControl x:Name="Map" ...>
   <g:GMapControl.ItemsPanel>
       <ItemsPanelTemplate>
           <Canvas IsManipulationEnabled="True" />
       </ItemsPanelTemplate>
   </g:GMapControl.ItemsPanel>
   <!-- ... -->

An diesem Punkt müssen Sie die Verkabelung vornehmen Window:

<Window ...
    ManipulationStarting="Window_ManipulationStarting"
    ManipulationDelta="Window_ManipulationDelta"
    ManipulationInertiaStarting="Window_InertiaStarting">

Und stellen Sie die entsprechenden Methoden im Code Behind bereit (schamlos gestohlen und daraus angepasst). MSDN-Komplettlösung):

void Window_ManipulationStarting(
    object sender, ManipulationStartingEventArgs e)
{
    e.ManipulationContainer = this;
    e.Handled = true;
}

void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
    // uses the scaling value to supply the Zoom amount
    this.Map.Zoom = e.DeltaManipulation.Scale.X;
    e.Handled = true;
}

void Window_InertiaStarting(
    object sender, ManipulationInertiaStartingEventArgs e)
{
    // Decrease the velocity of the Rectangle's resizing by 
    // 0.1 inches per second every second.
    // (0.1 inches * 96 pixels per inch / (1000ms^2)
    e.ExpansionBehavior.DesiredDeceleration = 0.1 * 96 / (1000.0 * 1000.0);
    e.Handled = true;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top