2010-01-30 15 views
9

Canvas alt sınıfına girdim, böylece Render işlevini geçersiz kılabiliyorum. WPF'de bir bitmapi nasıl yükleyeceğimi ve bunu tuvale nasıl yükleyeceğimi bilmem gerekiyor. WPF'ye tamamen yeni geldim ve size görünüşte önemsiz bir şeyi nasıl yapacağınızı gösteren herhangi bir öğretici bulamadım. Örneklerle adım adım talimatlar harika olurdu.WPF'de bitmapi tuvali nasıl oluşturulur?

cevap

11

Bu başlangıç ​​olmalıdır: Eğer tuval arka planını boyamak istiyorsun, ben Background olarak ImageBrush kullanarak öneriyoruz

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)); 
    } 
} 
3

, 'sen Onender geçersiz kılmak için Canvas alt sınıfı için ihtiyacım yok olarak bu kadar basit kuzen.

Ama sana sordum ne için bir demo kaynak kodu vereceğiz:

bir sınıf oluşturun bu gibi kullanabilirsiniz Şimdi

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); 
      } 
     } 
    } 

(ben o ImageCanvas aradım) : WPF

<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> 
11

bunu yapmak istedim bir arka plan için BMP çizmek özellikle eğer OnRender geçersiz kılmak gerekir nadir bir durumdur:

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