C# 如何在Windows Phone/C中使用像素#

C# 如何在Windows Phone/C中使用像素#,c#,silverlight,windows-phone-8,writeablebitmap,C#,Silverlight,Windows Phone 8,Writeablebitmap,Windows Phone 8使用缩放因子值缩放元素,使所有像素都虚拟为800x480,而实际宽度/ActualHeight等值返回“假”800x400值 我正在显示一个writeablebitmap,它是在我的UI背景上动态构建的,并且希望它是由所有可用像素(而不是缩放的800x480图像)构建的。如何“禁用”缩放并将虚拟像素映射为真实设备像素 我知道如何从比例因子计算值,但我希望它能与图像背景一起正确使用,并在理想情况下完全禁用该功能,因为它对于我们的特定用例是不必要的。似乎没有办法“实际”

Windows Phone 8使用缩放因子值缩放元素,使所有像素都虚拟为800x480,而
实际宽度/ActualHeight
等值返回“假”800x400值

我正在显示一个
writeablebitmap
,它是在我的UI背景上动态构建的,并且希望它是由所有可用像素(而不是缩放的800x480图像)构建的。如何“禁用”缩放并将虚拟像素映射为真实设备像素


我知道如何从比例因子计算值,但我希望它能与图像背景一起正确使用,并在理想情况下完全禁用该功能,因为它对于我们的特定用例是不必要的。

似乎没有办法“实际”做到这一点。我最后做的是假装,如果有人有更好的答案,我很乐意接受

我使用ScaleFactor的值如下:

scaleFactor = ((double)Application.Current.Host.Content.ScaleFactor) / 100.0;
然后我创建了可写位图,如下所示:

screen = new WriteableBitmap((int)(cl.ActualWidth * scaleFactor), (int)(cl.ActualHeight * scaleFactor));
并将其放置在背景中:

backgroundImage.Stretch = Stretch.Fill;

看起来这实际上是正确地使用图像,并将图像的像素映射到屏幕上,而不是缩放它们。这有点老套,所以如果有更好的解决方案,我很乐意听到。

您是否正在尝试创建图像?如有,请参阅。您希望您的应用程序不可扩展吗?如果是,请参见“谢谢”。我希望WriteableBitmap上的一个像素与屏幕上的一个像素相匹配。我看了这两篇文章,看不出是怎么做到的。第二篇文章讨论了原始像素,但我无法从文章中了解如何实际使用它们。是否尝试从xaml元素创建可写位图?我已经从xaml元素创建了可写位图。问题是该设备的屏幕为768 x 1280,但报告为480x800。我可以通过使用ScaleFactor hack来解决这个问题,并创建一个更大的图像。问题是:如果我这样做,并将较大的可写图像设置为背景,则较大图像中的1px将映射为屏幕上的1px,或者它们将被缩小->再次放大。这是正确的方法吗?还是我可以禁用我不需要的缩放功能?啊!如果要创建可写位图并希望它适合设备,请使用“保存到所需大小”选项,然后可以根据需要重复使用。如果不想保存图像,只需按原样使用WritebaleBitmap即可