Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF中将位图渲染到画布中?_C#_.net_Wpf_Canvas_Bitmapimage - Fatal编程技术网

C# 如何在WPF中将位图渲染到画布中?

C# 如何在WPF中将位图渲染到画布中?,c#,.net,wpf,canvas,bitmapimage,C#,.net,Wpf,Canvas,Bitmapimage,我已经将Canvas子类化,以便覆盖其Render函数。我需要知道如何在WPF中加载位图并将其渲染到画布。我是WPF的新手,我还没有找到任何教程向您展示如何做一些看似琐碎的事情。带示例的分步说明会很好。这将让您开始: class MyCanvas : Canvas { protected override void OnRender (DrawingContext dc) { BitmapImage img = new BitmapImage (new Uri ("c:\\de

我已经将
Canvas
子类化,以便覆盖其
Render
函数。我需要知道如何在WPF中加载位图并将其渲染到画布。我是WPF的新手,我还没有找到任何教程向您展示如何做一些看似琐碎的事情。带示例的分步说明会很好。

这将让您开始:

class MyCanvas : Canvas {
   protected override void OnRender (DrawingContext dc) {
      BitmapImage img = new BitmapImage (new Uri ("c:\\demo.jpg"));
      dc.DrawImage (img, new Rect (0, 0, img.PixelWidth, img.PixelHeight));
   }
}

如果您确实想绘制画布的背景,我建议使用
ImageBrush
作为
background
,因为这很简单,因为您不需要子类
canvas
来覆盖
oneder

但我将为您提供一个演示源代码,以满足您的要求:

创建一个类(我称之为
ImageCanvas

现在您可以这样使用它:

<Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1" Title="Window1" Height="300" Width="300">
    <Grid>
        <local:ImageCanvas CanvasImageSource="/Splash.png">
            <TextBlock Text="Hello From Mihir!" />
        </local:ImageCanvas>
    </Grid>
</Window>

在WPF中,很少有情况需要覆盖
OnRender
,尤其是如果您只想在背景中绘制BMP:

<Canvas>
    <Canvas.Background>
        <ImageBrush ImageSource="Resources\background.bmp" />
    </Canvas.Background>
    <!-- ... -->
</Canvas>

<Canvas>
    <Canvas.Background>
        <ImageBrush ImageSource="Resources\background.bmp" />
    </Canvas.Background>
    <!-- ... -->
</Canvas>