Domanda

Sto cercando di farlo GMap.Net controllo multitouch abilitato, utilizzando gli eventi integrati di WPF ma non ho avuto successo.

Ho trovato una serie di articoli sul multitouch come Questo E Questo uno.In tutti loro, ManipulationContainer è una tela e controlli mobili posizionati su di essa, ma nel problema GMap ManipulationContainer È GMapControl e non c'è alcun controllo su di esso.come posso usare e.ManipulationDelta dati da ingrandire e spostare?

IL GMapControl ha un Zoom proprietà che aumentandola o diminuendola è possibile ingrandire o rimpicciolire.

È stato utile?

Soluzione

Un rapido sguardo al codice mostra che il file GMapControl è un ItemsContainer.

Dovresti essere in grado di rinnovare il file ItemsPanel modello e fornire il file IsManipulationEnabled proprietà lì:

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

A questo punto è necessario cablare il Window:

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

E fornire i metodi appropriati nel Code Behind (sfacciatamente rubato e adattato da questo Soluzione MSDN):

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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top