相关疑难解决方法(0)

强制在内存中呈现WPF控件

我有以下代码:

void Test()
{
    currentImage.Source = GetBitmap();
    RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
    rtb.Render(currentImage);
}
Run Code Online (Sandbox Code Playgroud)

这段代码应该渲染currentImage,这是我的xaml中的一个Image控件到RenderTargetBitmap.

它不起作用,rtb返回一个空白图像,问题是currentImage还没有渲染自己,所以这种行为是预期的,我认为......

为了解决这个问题,我编写了这段代码:

void Test()
{
    currentImage.Source = GetBitmap();

    this.Dispatcher.BeginInvoke((Action)delegate()
    {
        RenderTargetBitmap rtb = new RenderTargetBitmap(100, 100, 96.0, 96.0, PixelFormats.Default);
        rtb.Render(currentImage);
    }, System.Windows.Threading.DispatcherPriority.Render, null);

}
Run Code Online (Sandbox Code Playgroud)

基本上,我等待currentImage被渲染,然后我可以将它正确渲染到我的RenderTargetBitmap.

有没有办法让它工作而不使用这种解决方法?强制Image控件在内存中渲染可能吗?

谢谢!

wpf wpf-controls

26
推荐指数
2
解决办法
2万
查看次数

WPF - 在内存中获取UIElement的大小?

有没有办法获得一个UIElement存在于内存中并且尚未呈现的大小?

我目前有一个例程,它创建一个Gridfrom a DataTable然后将Grid添加到一个FixedDocument.我需要知道它的大小,Grid因为我想根据需要自动从肖像切换到横向; 甚至改变FontSize网格.

size wpf wpf-controls uielement

7
推荐指数
1
解决办法
6699
查看次数

将控件绘制到内存(位图)

是否可以将wpf控件绘制到内存(位图)而根本不在屏幕上绘制?
我找到了一个如何保存到位图的示例,但是仅当在屏幕上绘制了窗口时,该示例才起作用。

BitmapImage bitmap = new BitmapImage();
    RenderTargetBitmap renderTarget =
    new RenderTargetBitmap((int)canvaspad.Width,
    (int)canvaspad.Height,
    96,
    96,
    System.Windows.Media.PixelFormats.Default);
renderTarget.Render(canvaspad);
Run Code Online (Sandbox Code Playgroud)

c# wpf controls render bitmap

4
推荐指数
1
解决办法
2272
查看次数

标签 统计

wpf ×3

wpf-controls ×2

bitmap ×1

c# ×1

controls ×1

render ×1

size ×1

uielement ×1