UWP-如何在拖放过程中更改拖动图像的大小?
我正在尝试拖放Viewbox中存在的UI元素。拖动过程开始后,将立即显示拖动操作所需的图像,但该图像是完整大小,而不是Viewbox中显示的图像大小 有没有办法让拖动图像自动符合源元素的显示大小?如果没有,是否有方法通过编程更改拖动图像的大小,以匹配所拖动的UI元素的显示大小 我在DragStartingEventArgs的数据包或DragUI中没有看到任何允许调整拖动图像大小的选项UWP-如何在拖放过程中更改拖动图像的大小?,uwp,drag-and-drop,Uwp,Drag And Drop,我正在尝试拖放Viewbox中存在的UI元素。拖动过程开始后,将立即显示拖动操作所需的图像,但该图像是完整大小,而不是Viewbox中显示的图像大小 有没有办法让拖动图像自动符合源元素的显示大小?如果没有,是否有方法通过编程更改拖动图像的大小,以匹配所拖动的UI元素的显示大小 我在DragStartingEventArgs的数据包或DragUI中没有看到任何允许调整拖动图像大小的选项 正在拖动的UI元素是一个RelativePanel,其中包含许多嵌入的图像和形状。好的,这有点粗糙,但似乎工作正
正在拖动的UI元素是一个RelativePanel,其中包含许多嵌入的图像和形状。好的,这有点粗糙,但似乎工作正常。有很多改进可以完成,但这里有一个方法可以完成
private async void OnDragStarting(UIElement sender, DragStartingEventArgs args)
{
var relativePanel = (RelativePanel) sender;
var ellipse = (Ellipse)relativePanel.Children.ToList()[0];
var deferral = args.GetDeferral();
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(ellipse);
// convert the ellipse to a pixel array
var pixelBuffer = await bitmap.GetPixelsAsync();
var pixelArray = pixelBuffer.ToArray();
var stream = new InMemoryRandomAccessStream();
var img = new BitmapImage();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Straight,
(uint)bitmap.PixelWidth,
(uint)bitmap.PixelHeight,
96,
96,
pixelArray);
// now that there is an encoder set up, set the new size of the image
encoder.BitmapTransform.ScaledHeight = 50;
encoder.BitmapTransform.ScaledWidth = 50;
await encoder.FlushAsync();
await img.SetSourceAsync(stream);
args.DragUI.SetContentFromBitmapImage(img);
deferral.Complete();
}
目前,还没有内置的API供您使用。您可以在windows“反馈中心”上提交功能请求。如果没有内置API,是否有建议的解决方法?