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>
  • 相关阅读:
    用户控件赋值
    计算一串数字中每个数字出现的次数
    如何理解c和c++的复杂类型声明
    STM32 NVIC学习
    stm32f10x_flash.c中文版
    IBM中国研究院Offer之感言——能力是一种态度
    对于STM32别名区的理解 (转载)
    STM32时钟学习之STM3210X_RCC.H解读
    STM32 DMA
    STM32 内部时钟输出PA.8(MCO)
  • 原文地址:https://www.cnblogs.com/rchao/p/15270803.html
Copyright © 2011-2022 走看看