我目前正在尝试制作一个涉及在屏幕上下滑动控件的应用程序。从本质上讲,想象一个有页面的移动桌面,这就是我的应用程序的外观,除了只有 2 个页面。我目前使用情节提要和 ItemsControl 以及离开屏幕的页面的 RenderTargetBitmap 滑动页面。问题是,RenderTargetBitmap 看起来要么被拉伸了一点,要么就像控件上的所有文本突然变成粗体一样。您可以在下图中看到粗体效果:
这是页面未呈现为位图时的样子:
从右侧滑入的另一个控件没有这样的问题。有这个问题的总是 RenderTargetBitmap。我用这个函数生成位图:
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:问题解决了,我在函数中的高度和宽度是错误的......问题已经困扰我好几个星期了。有时它的小事很重要!