Canvas
そのRender
機能をオーバーライドできるようにサブクラス化しました。ビットマップを WPF にロードしてキャンバスにレンダリングする方法を知る必要があります。私は WPF にまったく慣れていないので、一見些細なことを行う方法を示すチュートリアルは見つかりませんでした。例を含む段階的な説明は素晴らしいでしょう。
33667 次
3 に答える
15
OnRender
WPF では、特に BMP を背景に描画することだけが必要な場合に、オーバーライドが必要になることはまれです。
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="Resources\background.bmp" />
</Canvas.Background>
<!-- ... -->
</Canvas>
于 2010-01-30T16:12:40.293 に答える
11
これで始められるはずです:
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));
}
}
于 2010-01-30T15:45:13.490 に答える
3
キャンバスの背景をペイントしたい場合は、ImageBrush
asを使用することをお勧めします。オーバーライドBackground
するためにサブクラス化する必要がないため、単純です。 Canvas
Onender
しかし、私はあなたが尋ねたもののデモソースコードを提供します:
クラスを作成します(私はそれを呼び出しましたImageCanvas
)
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace WpfApplication1
{
public class ImageCanvas : Canvas
{
public ImageSource CanvasImageSource
{
get { return (ImageSource)GetValue(CanvasImageSourceProperty); }
set { SetValue(CanvasImageSourceProperty, value); }
}
public static readonly DependencyProperty CanvasImageSourceProperty =
DependencyProperty.Register("CanvasImageSource", typeof(ImageSource),
typeof(ImageCanvas), new FrameworkPropertyMetadata(default(ImageSource)));
protected override void OnRender(System.Windows.Media.DrawingContext dc)
{
dc.DrawImage(CanvasImageSource, new Rect(this.RenderSize));
base.OnRender(dc);
}
}
}
これで、次のように使用できます。
<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>
于 2010-01-30T16:06:17.813 に答える