有沒有辦法在Windows 8 metro應用程序中拖放圖像。 我正在使用C#和XAML。 以下是我所需要的...在Windows 8 Metro應用程序中拖放圖像
2
A
回答
5
肯定有。你必須自己控制它,但它很容易。您需要使用幾個指針事件是這樣的:
XAML:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" PointerMoved="GridPointerMoved">
<Image x:Name="image1" HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100" Source="Assets/imageFile.png" PointerPressed="ImagePointerPressed" PointerReleased="ImagePointerReleased"/>
</Grid>
然後在您的CS文件:
Point positionWithinImage;
private void ImagePointerPressed(object sender, PointerRoutedEventArgs e)
{
Debug.WriteLine("Pressed");
holding = true;
positionWithinImage = e.GetCurrentPoint(sender as Image).Position;
}
private void ImagePointerReleased(object sender, PointerRoutedEventArgs e)
{
Debug.WriteLine("Released");
holding = false;
}
bool holding = false;
private void GridPointerMoved(object sender, PointerRoutedEventArgs e)
{
if (holding)
{
var pos = e.GetCurrentPoint(image1.Parent as Grid).Position;
image1.Margin = new Thickness(pos.X - this.positionWithinImage.X, pos.Y - this.positionWithinImage.Y, 0, 0);
}
}
2
我想你的解決方案,但它並沒有真正引起「完美「的圖像移動。
另外,您可以嘗試使用操作事件:
XAML:
<Image x:Name="imgSanta" Width="250" Source="Assets/santa.png" ManipulationMode="All" ManipulationStarted="imgSanta_ManipulationStarted_1" ManipulationDelta="imgSanta_ManipulationDelta_1"></Image>
C#
private void imgSanta_ManipulationStarted_1(object sender, ManipulationStartedRoutedEventArgs e)
{
txtFeedback.Text = "Manipulation started";
}
private void imgSanta_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
var newTop = imgSanta.Margin.Top + e.Delta.Translation.Y;
var newLeft = imgSanta.Margin.Left + e.Delta.Translation.X;
imgSanta.Margin = new Thickness(newLeft, newTop, 0, 0);
}
即使這樣,我不是100%滿意,但我不認爲這有一個更好的結果。讓我知道你對此的看法。 (儘管這是一個較舊的帖子,但值得一提)
編輯: 我注意到1:1運動只在我的圖像位於StackPanel內時才起作用。
5
我已經找到了一個很好的解決方案在這裏:http://xatazch.blogspot.pt/2012/08/drag-and-drop-item-using.html
使用TranslateTransform我們可以得到可拖動項目順利和「實時」運動。
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
image1.ManipulationDelta += DragableItem_ManipulationDelta;
image1.RenderTransform = new TranslateTransform();
}
private void DragableItem_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
Image dragableItem = sender as Image;
TranslateTransform translateTransform = dragableItem.RenderTransform as TranslateTransform;
translateTransform.X += e.Delta.Translation.X;
translateTransform.Y += e.Delta.Translation.Y;
}
希望它有幫助!
0
joaquims方法是一個更快的... 具有看看這個演示程序:http://code.msdn.microsoft.com/windowsapps/Drag-and-Drop-a-picture-in-26580dc0
相關問題
- 1. Windows 8:如何在Windows 8中使用外部圖像Metro應用程序
- 2. 拖放列表,Windows 8應用程序?
- 3. Windows 8 Metro應用程序 - 渲染PNGs
- 4. Windows 8 Metro應用程序Iframe
- 5. DateTime.Now - Metro應用程序 - Windows 8
- 6. HtmlAgilityPack和Windows 8 Metro應用程序
- 7. SQlite與Windows 8 Metro應用程序
- 8. 獲取metro應用程序中的顏色像素(windows 8)
- 9. 如何在Windows 8應用程序中拖放移動?
- 10. 在Windows 8上實現驗證Metro Metro應用程序
- 11. 在Windows 8 Metro綁定超鏈接到richtextblock Metro應用程序
- 12. 在Windows 8 metro應用程序中創建具有圓角的圖像
- 13. 在Windows 8 Metro應用
- 14. RotateTransform Windows 8中的Web視圖Metro應用程序
- 15. Windows 8從桌面應用程序啓動「metro」應用程序?
- 16. Windows 8 Metro Style應用程序:多應用程序包
- 17. Windows 8 Metro應用程序MediaElement.SetSource(在播放過程中無法更改音量)
- 18. 使用Windows 8/WinRT在Metro應用程序中啓用
- 19. 如何在我的「Metro Style」應用程序中拖放WPF?
- 20. 如何在Windows 8.1 metro應用程序中上傳圖像?
- 21. 如何使用WinRT在Windows 8 Metro應用程序中播放聲音文件?
- 22. 在Windows 8 metro應用程序中使用iframe
- 23. 將用戶數據存儲在Windows 8 metro應用程序中
- 24. 在Windows 8 Metro中禁用應用程序睡眠
- 25. 使用Windows 8 Metro應用
- 26. 在Windows 8 Metro js應用程序中控制iframe YouTube播放器
- 27. 如何在Windows 8 Metro C#XAML應用程序中播放H.264 RTSP視頻?
- 28. 在windows 8中放置一個鏈接metro風格的應用程序
- 29. 如何在Metro(Windows 8)應用程序中檢測Alt?
- 30. RichTextBlockOverflow.HasOverflowContent在Windows 8 Metro應用程序中始終爲false
拖放光滑,但有時,如果我們做得更快圖像超出屏幕的,而指針仍然在屏幕:( –