首页 > 编程语言 >【C#】Bitmap使用汇总

【C#】Bitmap使用汇总

时间:2023-10-17 14:58:23浏览次数:34  
标签:BitmapSource C# 汇总 System dll int Windows Bitmap

一、实现Bitmap和BitmapSource之间的转换

在Winform中使用BitmapSource须添加PresentationCore.dll、WindowsBase.dll、System.Xaml.dll

        /// <summary>
        /// 将 Bitmap 转化为 BitmapSource
        /// </summary>
        /// <param name="bmp"/>要转换的 Bitmap
        /// <returns>转换后的 BitmapSource</returns>
        public static BitmapSource ToBitmapSource(this System.Drawing.Bitmap bmp)
        {
            System.IntPtr hBitmap = bmp.GetHbitmap();
            try
            {
                return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, System.IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
            }
            finally
            {
                DeleteObject(hBitmap);
            }
        }

 参考:http://www.firstsolver.com/wordpress/?p=3462/

二、加载16位灰度图

        private Bitmap DisplayImage16(string fileName)
        {
            ///须添加PresentationCore.dll、WindowsBase.dll、System.Xaml.dll
            try
            {
                Bitmap bp;
                BinaryReader br = new BinaryReader(File.Open(fileName, FileMode.Open));
                long iTotalSize = br.BaseStream.Length;
                int iNumberOfPixels = (int)(iTotalSize / 2);

                int bitsPerPixel = 16;
                int stride = (picweight * bitsPerPixel + 7) / 8;
                ushort[] pix16 = new ushort[iNumberOfPixels];

                for (int i = 0; i < iNumberOfPixels; ++i)
                {
                    ushort pixShort = (ushort)(br.ReadUInt16());
                    pix16[i] = pixShort;
                }
                System.Windows.Media.Imaging.BitmapSource bmps = System.Windows.Media.Imaging.BitmapSource.Create(picweight, picheight, 96, 96, System.Windows.Media.PixelFormats.Gray16, null,
                       pix16, stride);

                bp = ToBitmap(bmps);
                return bp;
            }
            catch (Exception e)
            {
                return null;
            }
        }

 

标签:BitmapSource,C#,汇总,System,dll,int,Windows,Bitmap
From: https://www.cnblogs.com/Mars-0603/p/17769678.html

相关文章

  • docker 安装
    如果出现:Failedtodownloadmetadataforrepo‘docker-ce-stable’:Cannotdownloadrepomd.xml:Cannotdownloadrepodata/repomd.xml:Allmirrorsweretried是因为残留文件没删除干净:cd/etc/yum.repos.d/rm-rfdocker-ce.repodocker安装步骤:1、先查看是否原......
  • Oracle中如何根据查询sql片段定位查询客户端主机地址
    --1.根据sql片段获取sql_id--select*fromv$sqlwherelast_active_time>sysdateandsql_textlike'%ZL0204_03r%';selectsql_id,modulefromv$sqlwherelast_active_time>sysdateandsql_textlike'%ZL0204_03%';--2.根据sql_id查询sid......
  • ECS-使用cat查看文件后出现乱码,整个终端显示包括shell提示符都是乱码
    问题描述:在bash下用cat显示二进制文件后会出现乱码,整个终端显示包括shell提示符都是乱码,这个跟语言环境无关。解决办法:恢复的话,大致有以下几种方法:方法一:盲打输入echo-e'\xf'并回车。与这个命令相对的是echo-e'\xe',在正常状态下输入此命令会把终端搞出乱码来。这两个命令的......
  • docker 常用命令
    whereisredis查询redis.conf文件位置dockerimages用于查看本地已下载的镜像dockersearchnginx查询镜像dockerpullnginx下载dockerrun-it--name别名-dnginx启动一个容器dockerrun-itnaginx/bin/bash dockerps查看运行中的......
  • docker 安装 nginx tomcat mysql
    dockersearchnginxdockerpullnginx//在root目录下创建nginx目录用于储层nginx数据信息mkdir~/nginxcdnginxmkdirconfcdconf把nginx.conf文件拷贝到~/nginx/con目录下cd~/nginxdockerrum-id--namenginx01\-p80:80\-v$PWD/conf/nginx.conf:/etc/nginx/n......
  • SPI 接口 CAN协议控制器 MCP2515/DP2515国产替代芯片DPC15
    can控制器是CAN局域网控制器的简称,为解决现代汽车中众多测量控制部件之间的数据交换而开发的一种串行数据通信总线。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。can控制器最初是为汽车的监测、控制系统而......
  • ECS-Centos7登录页面出现Hint: caps lock on,输入大小写字母反了(大小写反转问题)
    问题描述:虚拟机Centos7,输入大小写字母反了,开启capslock的时候变成小写字母了,关闭则变成大写了。。。解决办法:只需要执行:setleds+caps 或 setleds-caps 即可。如图: ......
  • 每天5分钟复习OpenStack(五)CPU虚拟化
    KVM虚拟化之CPU虚拟化存在是为了更高效的利用物理机的资源,而虚拟机技术主要是针对三大组件,分别是CPU虚拟化、存储虚拟化、网络虚拟化。下面我们分别介绍下三大组件的常用知识。CPU虚拟化1.1CPU虚拟化支持KVM的虚拟化是需要CPU硬件支持的。还记得我们在前面的章节讲过......
  • Linux中查看服务器内存/CPU/网络占用情况的命令
    目录1、查看物理CPU个数2、查看服务器CPU内核个数3、服务器内存使用情况4、查看服务器的平均负载5、查看系统整体性能情况6、查看系统已载入的相关模块7、查找PCI设置8、网络流量监控9、查看系统内核1、查看物理CPU个数cat cat/proc/cpuinfo|grep"physic......
  • 禅道V16.5SQL注入漏洞(CNVD-2022-42853)
    禅道V16.5SQL注入漏洞(CNVD-2022-42853)0x01介绍禅道项目管理软件是一款国产的、基于LGPL协议、开源免费的项目管理软件,它集产品管理、项目管理、测试管理于一体,同时还包含了事务管理、组织管理等诸多功能,是中小型企业项目管理的首选,基于自主的PHP开发框架──ZenTaoPHP而成,第三......