我目前正在尝试制作一个涉及在屏幕上和屏幕外滑动控件的应用程序。从本质上讲,想象一个移动桌面左侧和右侧的页面,这就是我的应用程序的样子,除了只有2页。我目前使用故事板和ItemsControl以及离开屏幕的页面的RenderTargetBitmap来滑动页面。问题是,RenderTargetBitmap看起来要么拉伸一点,要么就好像控件上的所有文本都突然变为粗体一样。您可以在下图中看到粗体效果:
当页面未呈现为位图时,这就是页面的样子:
从右侧滑入的另一个控件没有这样的问题。 RenderTargetBitmap始终存在此问题。我用这个函数生成了Bitmap:
Public Function RenderBitmap(Element As FrameworkElement) As RenderTargetBitmap
Dim TTopLeft As Double = 0
Dim TTopRight As Double = 0
Dim TWidth As Integer = CInt(Element.ActualHeight)
Dim THeight As Integer = CInt(Element.ActualWidth)
Dim DPIX As Double = 96.0
Dim DPIY As Double = 96.0
Dim PxlFormat As PixelFormat = PixelFormats.Default
Dim ElementBrush As New VisualBrush(Element)
Dim Visual As New DrawingVisual()
Dim DC As DrawingContext = Visual.RenderOpen()
DC.DrawRectangle(ElementBrush, Nothing, New Rect(TTopLeft, TTopRight, TWidth, THeight))
DC.Close()
Dim ExportBitmap As New RenderTargetBitmap(TWidth, THeight, DPIX, DPIY, PxlFormat)
ExportBitmap.Render(Visual)
Return ExportBitmap
End Function
显示在矩形中:
Dim rtb As RenderTargetBitmap = RenderBitmap(PageViewer)
RectangleVisual.Fill = New ImageBrush(BitmapFrame.Create(rtb)) With {.Stretch = Stretch.Fill}
XAML中的矩形是:
<Border x:Name="BorderVisual" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Rectangle x:Name="RectangleVisual"/>
<Border.RenderTransform>
<TranslateTransform/>
</Border.RenderTransform>
<Border.CacheMode>
<BitmapCache EnableClearType="True" SnapsToDevicePixels="True" RenderAtScale="1.0"/>
</Border.CacheMode>
</Border>
我错过了一些应该设置为true的属性吗?优质的房产?我找不到任何东西。有没有更好的方法可以用来创建位图?
谢谢!
编辑1:使用Stretch = None
编辑2:问题解决了,我在功能中的高度和宽度都是错误的方式......问题一直困扰着我好几个星期。有时它的重要事情很重要!