Tôi đã phân loại Canvas
để tôi có thể ghi đè chức năng Render
của nó. Tôi cần phải biết làm thế nào tôi có thể tải một bitmap trong WPF và render rằng để canvas. Tôi hoàn toàn mới với WPF và tôi đã không tìm thấy bất kỳ hướng dẫn nào cho bạn thấy làm thế nào để làm điều gì đó dường như tầm thường. Hướng dẫn từng bước với các ví dụ sẽ tuyệt vời.Làm cách nào để hiển thị bitmap thành canvas trong WPF?
9
A
Trả lời
11
Điều này sẽ giúp bạn bắt đầu:
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
Nếu bạn muốn vẽ nền của vải, tôi sẽ khuyên bạn sử dụng ImageBrush
như Background
, 'coz đó là đơn giản như bạn không cần phải phân lớp Canvas
để ghi đè Onender
.
Nhưng tôi sẽ cung cấp cho bạn một bản demo mã nguồn cho những gì bạn đã hỏi:
Tạo một lớp (tôi đã gọi nó là 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);
}
}
}
Bây giờ bạn có thể sử dụng nó như thế này :
<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
Trong WPF nó là một trường hợp hiếm hoi mà bạn sẽ cần phải ghi đè OnRender
đặc biệt là nếu tất cả các bạn muốn làm là vẽ một BMP tới một nền:
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="Resources\background.bmp" />
</Canvas.Background>
<!-- ... -->
</Canvas>
Các vấn đề liên quan
- 1. Chia tỷ lệ nội dung WPF trước khi hiển thị thành bitmap
- 2. Làm cách nào để hiển thị biểu tượng tệp Windows trong WPF?
- 3. Hiển thị JPopupMenu trong Canvas
- 4. Bạn làm cách nào để hiển thị một phần của SVG trong Canvas?
- 5. Hiển thị bản vẽ nhanh trong WPF
- 6. Chuyển đổi Bitmap thành Drawable hiển thị không có gì
- 7. Làm cách nào để hiển thị danh sách thành mẫu?
- 8. Hiệu suất bitmap WPF
- 9. TextBlock để hiển thị HTML trong WPF
- 10. Làm cách nào để hiển thị chế độ xem có chứa các lớp Hoạt ảnh chính thành bitmap?
- 11. Làm thế nào tôi có thể kéo dài bitmap trong WPF mà không làm mịn pixel
- 12. android cách vẽ bitmap trên canvas bán trong suốt
- 13. Làm cách nào để chuyển đổi nội dung canvas thành hình ảnh?
- 14. Cách hiển thị một phần của bitmap trong suốt
- 15. Làm cách nào để hiển thị con trỏ chờ trong khi khởi động ứng dụng WPF?
- 16. Làm cách nào để hiển thị tên thuộc tính trong tiêu đề nhóm trong wpf
- 17. Làm cách nào để vẽ một đường trên canvas trong WPF có độ dày 1 pixel
- 18. WPF Ảo hóa Canvas
- 19. Hiệu suất WPF: Hiển thị hàng nghìn đường dẫn/hình dạng trên Canvas
- 20. Cách hiển thị các mục trong Canvas qua Binding
- 21. Tạo phần tử WPF ngoài màn hình và hiển thị bitmap
- 22. Làm cách nào để làm mới canvas
- 23. Hiển thị hình ảnh trong TextBlock (WPF)
- 24. Làm cách nào để chuyển đổi bitmap thành video?
- 25. Làm cách nào để hiển thị nhật ký NLog trong điều khiển WPF?
- 26. Android: Cách dễ nhất để làm cho một WebView hiển thị một Bitmap?
- 27. Hiển thị nhiều nhóm nhiều trong WPF
- 28. Vẽ bitmap mờ bằng Canvas (Android)
- 29. Hiển thị menu lập trình trong WPF
- 30. Hiển thị hình ảnh WPF thành tệp WMF/EMF