RenderTargetBitmap Bold的文本

时间:2012-12-13 04:32:18

标签: wpf vb.net bitmap

我目前正在尝试制作一个涉及在屏幕上和屏幕外滑动控件的应用程序。从本质上讲,想象一个移动桌面左侧和右侧的页面,这就是我的应用程序的样子,除了只有2页。我目前使用故事板和ItemsControl以及离开屏幕的页面的RenderTargetBitmap来滑动页面。问题是,RenderTargetBitmap看起来要么拉伸一点,要么就好像控件上的所有文本都突然变为粗体一样。您可以在下图中看到粗体效果:

Bold Problem

当页面未呈现为位图时,这就是页面的样子:

Standard

从右侧滑入的另一个控件没有这样的问题。 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

enter image description here

编辑2:问题解决了,我在功能中的高度和宽度都是错误的方式......问题一直困扰着我好几个星期。有时它的重要事情很重要!

0 个答案:

没有答案