我正在尝试将a转换Bitmap (SystemIcons.Question)为a,BitmapImage因此我可以在WPF图像控件中使用它.
我有以下方法将其转换为a BitmapSource,但它返回一个InteropBitmapImage,现在的问题是如何将其转换为BitmapImage.直接演员似乎不起作用.
有谁知道怎么做?
码:
public BitmapSource ConvertToBitmapSource()
{
int width = SystemIcons.Question.Width;
int height = SystemIcons.Question.Height;
object a = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(SystemIcons.Question.ToBitmap().GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(width, height));
return (BitmapSource)a;
}
Run Code Online (Sandbox Code Playgroud)
返回BitmapImage的属性:(绑定到我的图像控件)
public BitmapImage QuestionIcon
{
get
{
return (BitmapImage)ConvertToBitmapSource();
}
}
Run Code Online (Sandbox Code Playgroud) 这个简单的程序不起作用,图像不会出现在Window中.
namespace ClipBoardTest
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void CopyButton_Click(object sender, RoutedEventArgs e)
{
if (Clipboard.ContainsImage())
{
ImageUIElement.Source = Clipboard.GetImage();
Console.WriteLine("Clipboard copied to UIElement");
}
else
{
Console.WriteLine("No image in Clipboard");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是"剪贴板复制到UIElement",但图像不会出现在窗口中.
XAML:
<Window x:Class="ClipBoardTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="CopyButton" Content="Copy" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75" Click="CopyButton_Click"/>
<Image x:Name="ImageUIElement" Margin="90,10,10,10"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
有谁知道,哪些是错的?