zoukankan      html  css  js  c++  java
  • C# resource.resx 图片资源读取问题

    直接读取出来是Bitmap类型 xmal 中无法直接转换,我们需要编写一个转换器

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Globalization;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Data;
    using System.Windows.Interop;
    using System.Windows.Media.Imaging;
    
    namespace MyApp
    {
    
        class ResourceToSourceConverter : IValueConverter
        {
    
            [DllImport("gdi32.dll", SetLastError = true)]
            private static extern bool DeleteObject(IntPtr hObject);
    
    
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if (value == null)
                {
                    return null;
                }
                Bitmap bitmap = (Bitmap)value;
                IntPtr hBitmap = bitmap.GetHbitmap();
                BitmapSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                //DeleteObject 处理内存泄漏问题
                return !DeleteObject(hBitmap) ? throw new Win32Exception() : bitmapSource;
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    }

    xaml 中使用

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:res="clr-namespace:MyApp.Properties"
    xmlns:local="clr-namespace:MyApp"

    <Image Height="130">
       <Image.Source>
         <Binding Source="{x:Static res:Resources.title}">
            <Binding.Converter>
               <local:ResourceToSourceConverter />
            </Binding.Converter>
        </Binding>
      </Image.Source>
    </Image>
    
    <Page.Background>
      <ImageBrush>
        <ImageBrush.ImageSource>
          <Binding Source="{x:Static res:Resources.bg}">
            <Binding.Converter>
              <local:ResourceToSourceConverter />
            </Binding.Converter>
          </Binding>
        </ImageBrush.ImageSource>
      </ImageBrush>
    </Page.Background>
  • 相关阅读:
    linux开放防火墙端口方法
    Node.js 构建TCP服务
    React高阶组件
    在create-react-app 中启用装饰器语法
    Redux
    微信小程序组件与组件之间的通讯
    微信小程序网络请求
    微信小程序的页面导航跳转
    sqoop2启动job报错
    sqoop2启动client异常
  • 原文地址:https://www.cnblogs.com/rchao/p/15270803.html
Copyright © 2011-2022 走看看