का उपयोग करके मेरे आवेदन में एक बहुत ही सरल 'ड्रैग' तंत्र को लागू करने की मेरी खोज पर (जिसमें 'माता-पिता' कैनवास के अंदर घोंसले हुए कई कैनवास होते हैं) मैं निम्नलिखित बिट्स के साथ आया हूं कोड की: (अंतरिक्ष केवल प्रासंगिक बिट दिखा बचाने के लिए)डब्ल्यूपीएफ में ड्रैगगेबल कैनवास 'थंब'
MainWindow.xaml
<Canvas Name="parentCanvas" Background="#FFE8CACA">
<Canvas Name="myCanvas" Height="100" Width="200" Background="#FFB4FFB4">
<Thumb Name="myThumb" Canvas.Left="0" Canvas.Top="0" Background="Blue" Width="200" Height="20" DragDelta="onDragDelta" />
</Canvas>
<!-- debug -->
<Button Content="Zero" Height="51" Name="button1" Width="46" Click="button1_Click" Canvas.Left="14" Canvas.Top="302" />
<Label Name="pos" Width="499" Canvas.Left="77" Canvas.Top="302" Height="26" />
<Label Name="changes" Height="28" Canvas.Left="77" Canvas.Top="325" Width="499" />
</Canvas>
MainWindow.xaml.cs
void onDragDelta(object sender, DragDeltaEventArgs e)
{
Canvas.SetLeft(myCanvas, e.HorizontalChange);
Canvas.SetTop(myCanvas, e.VerticalChange);
//debug info
pos.Content = "Left: " + Canvas.GetLeft(myCanvas) + ", Top: " + Canvas.GetTop(myCanvas);
changes.Content = "Horizontal: " + e.HorizontalChange + ", Vertical: " + e.VerticalChange;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Canvas.SetLeft(myCanvas, 0);
Canvas.SetTop(myCanvas, 0);
}
जो काम करता है, यादृच्छिक रूप से! ऐसा लगता है कि माउस आंदोलनों का पालन करना है, लेकिन मुझे DragDeltaEventArgs
की व्याख्या करने में समस्या हो रही है, जो कैनवास के बहुत अस्थिर आंदोलन का कारण बनती है। यह समझाना मुश्किल है कि यहां एक छोटा वीडियो है जिसे मैंने कैप्चर किया है: http://img84.imageshack.us/img84/6614/drag.mp4
कोई टिप्पणी/सुझाव बहुत सराहना की जाएगी क्योंकि मैं थोड़ी देर के लिए इस पर घूर रहा हूं और यह नहीं समझ सकता यह से कोई लेना देना :(
मुझे अब मिल गया है, स्पष्टीकरण के लिए बहुत बहुत धन्यवाद :) – Hamza