0

我目前正在尝试制作一个涉及在屏幕上下滑动控件的应用程序。从本质上讲,想象一个有页面的移动桌面,这就是我的应用程序的外观,除了只有 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:问题解决了,我在函数中的高度和宽度是错误的......问题已经困扰我好几个星期了。有时它的小事很重要!

4

0 回答 0