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>