【问题标题】:c# wpf assign bitmap [duplicate]c# wpf分配位图[重复]
【发布时间】:2015-10-06 06:45:06
【问题描述】:

我曾经使用 WFA,但我也想尝试 WPF 平台。

我需要将现有位图分配给图像控件。

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    Bitmap sc = screenshot();
    ima.Source = new Bitmap(sc);
 }

这条线不起作用:ima.Source = new Bitmap(sc);

在图片框里我只能用这个

ima.Image = new Bitmap(sc);

但现在它抛出一个错误:

无法将类型“System.Drawing.Bitmap”隐式转换为“System.Windows.Media.ImageSource”。

【问题讨论】:

  • 你解决了吗?
  • @AbinMathew 不……我真的需要……
  • 我刚刚添加了另一种转换方法,请看一下。

标签: c# wpf image picturebox


【解决方案1】:

您还可以使用搜索功能: Convert System.Drawing.Bitmap to BitmapImage

private BitmapImage BitmapToImageSource(System.Drawing.Bitmap bitmap)
    {
        Image i = new Image();

        using (MemoryStream memory = new MemoryStream())
        {
            bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
            memory.Position = 0;
            BitmapImage bitmapimage = new BitmapImage();
            bitmapimage.BeginInit();
            bitmapimage.StreamSource = memory;
            bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
            bitmapimage.EndInit();

            i.Source = bitmapimage;

            return bitmapimage;
        }
    }

【讨论】:

    【解决方案2】:

    这会将路径转换为 ​​ImageSource。

    <Image>
        <Image.Source>
             <BitmapImage UriSource="{Binding ImagePath}" />
        </Image.Source>
    </Image>
    

    用这种方法试试。

    public ImageSource imageSourceForImageControl
    {
      get
       {
         ImageSourceConverter c = new ImageSourceConverter();
         return (ImageSource)c.ConvertFrom(yourBitmap);
       }
    }
    

    https://msdn.microsoft.com/en-us/library/system.windows.media.imagesourceconverter(v=vs.110).aspx

    【讨论】:

    • 好吧,我现在需要做什么才能在 c# 中分配 Imagepath?
    • 在 C#/VB 中创建一个名为 ImagePath 的属性,然后将路径分配给该属性。 eg: VB Public Property ImagePath() As String Get Return _ImagePath End Get Set(value As String) _ImagePath = value NotifyPropertyChanged("ImagePath") End Set End Property
    • 但我这里没有源.. 我只是使用screenshot 方法生成一个新的位图。它返回一个屏幕截图。它不是计算机上的本地图像或其他东西,
    • 如果是这种情况,您可以采用“Schwarzbrot”给出的答案并将bitmapImage设置为xaml。
    • 它太慢了,兄弟......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2021-04-03
    • 2011-12-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    相关资源
    最近更新 更多