我已經子類Canvas
,以便我可以覆蓋它的Render
函數。我需要知道如何在WPF中加載位圖並將其呈現到畫布上。我對WPF完全陌生,我還沒有找到任何教程來向你展示如何做一些看似微不足道的事情。帶示例的逐步說明會很棒。如何在WPF中將位圖呈現到畫布中?
9
A
回答
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));
}
}
3
如果你想畫的畫布的背景下,我會建議使用ImageBrush
爲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>
11
在WPF那就是你需要重寫OnRender
特別是如果你想要做的一切都畫一個BMP的背景難得一遇:
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="Resources\background.bmp" />
</Canvas.Background>
<!-- ... -->
</Canvas>
相關問題
- 1. 將WPF窗口呈現爲位圖
- 2. 如何將畫布複製到位圖
- 3. 如何將畫布合併到WPF中的較大布局中?
- 4. javafx在縮放畫布中呈現
- 5. 將HTML呈現爲WPF中的圖像?
- 6. 如何呈現從有位圖效果WPF元素的位圖?
- 7. 如何將偵聽器添加到畫布中的位圖? (Android)
- 8. 如何將字母呈現爲位圖?
- 9. 在WPF中將圖像縮放到畫布父級高度
- 10. 如何將Backbone.js單擊事件綁定到HTML5畫布內呈現的視圖?
- 11. 如何在HTML5畫布上呈現AppEngine blobstore圖像?
- 12. 以編程方式將位圖繪製到WPF畫布?
- 13. 如何在Android中將畫布轉換爲位圖?
- 14. 將mathml呈現爲html5畫布爲png
- 15. 將畫布綁定到WPF中的畫布
- 16. 如何從畫布中加載位圖中的位圖
- 17. 如何在WPF中克隆畫布
- 18. 呈現HTML5視頻到畫布正在壓縮圖像
- 19. 如何在Android中將小圖像繪製到畫布中
- 20. 將「不可見」的WPF控件呈現爲位圖圖像
- 21. 將畫布保存到位圖
- 22. 在WPF 4.0中:如何呈現與(PNG)位圖一樣好的窗口?
- 23. 如何在畫布中設置動畫位圖(Android)
- 24. 如何使用畫布在位圖中繪製筆畫?
- 25. 如何在不創建窗口的情況下將WPF UserControl呈現爲位圖
- 26. 如何在WPF中實現「無限大小」的畫布效果?
- 27. WPF動畫 - 將畫布帶到前面
- 28. WPF畫布中的形狀不出現
- 29. 如何將自動佈局視圖控制器呈現爲位圖?
- 30. 如何獲得畫布在畫布中的位置