none
关于windows窗体应用程序的设计问题 RRS feed

  • 问题

  • 使用 Visual Studio 2013 C# 来设计一个窗体运用程序,主要用来显示红外热成像图片和相关的操作的。

    1. 想要把一帧数据转换成一幅图片应该怎样操作,用到什么工具或控件?

    2. 硬件供应商提供的SDK一般情况下应该怎样使用?像dll文件一样放到安装目录下然后调用吗?

    3. 怎样把连接的红外热成像仪的内容像摄像机一样联系播放图片?

    4. 怎样将某一时刻的播放内容保存成图片?

    2017年9月14日 5:57

全部回复


  • Hi 一个刚开始使用VS的人,

    >>1. 想要把一帧数据转换成一幅图片应该怎样操作,用到什么工具或控件?

    你的一帧数据是指:比如160*90的一帧图片,数据为一个长度为160*90的一维数组,每个元素表示的是图片对应位置的argb颜色数据?

    下面代码可以试试从一个数组中获取图片的数据生成图片。

        int width = 188;
                int height = 188;
                var format = System.Drawing.Imaging.PixelFormat.Format32bppArgb;
                var lockMode = System.Drawing.Imaging.ImageLockMode.WriteOnly;
                var bitmap = new Bitmap(width, height, format);
                var bitmapRect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
                System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(bitmapRect, lockMode, format);
                {
                    int length = Math.Abs(bmpData.Stride) * bitmap.Height;
                    byte[] bitmapBytes = new byte[length];
                    int index = 0;
                    for (int j = height - 1; j >= 0; j--)
                    {
                        for (int i = 0; i < width; i++)
                        {
                            //pdata一维数组
                            Pixel v = pdata[index++];
                            bitmapBytes[j * bmpData.Stride + i * 4 + 0] = v.b;
                            bitmapBytes[j * bmpData.Stride + i * 4 + 1] = v.g;
                            bitmapBytes[j * bmpData.Stride + i * 4 + 2] = v.r;
                            bitmapBytes[j * bmpData.Stride + i * 4 + 3] = v.a;
                        }
                    }
    
                    System.Runtime.InteropServices.Marshal.Copy(bitmapBytes, 0, bmpData.Scan0, length);
                }
                bitmap.UnlockBits(bmpData);
                bitmap.Save("filename");


    下面的文章也许对你有帮助
    C#图片处理常见方法性能比较:
    http://www.cnblogs.com/luluping/archive/2012/07/17/2596497.html

    >>2. 硬件供应商提供的SDK一般情况下应该怎样使用?像dll文件一样放到安装目录下然后调用吗?

    一般是放在安装目录中(可执行文件夹中)。

    >>3. 怎样把连接的红外热成像仪的内容像摄像机一样联系播放图片?

    没有看明白。一般涉及到硬件的,请查阅硬件的SDK。

    >>4. 怎样将某一时刻的播放内容保存成图片?

    你这个播放内容是从硬件设备那边输出的?据我了解,一般硬件会在SDK中提供保存某一时刻的播放内容的函数。

    你的问题太广泛,还有很多问题可能和硬件SDK相关。建议你具体问题具体提问(排除SDK方面的问题)。这样能更好针对性的获得帮助。

    注意:此回复包含对第三方万维网站点的引用。 微软正在为您提供这方面的信息。 Microsoft不控制这些网站,并没有测试这些网站上发现的任何软件或信息; 因此,Microsoft不能对在那里发现的任何软件或信息的质量,安全性或适用性做任何陈述。 使用互联网上发现的任何软件都存在固有的危险,微软警告您确保在从因特网检索任何软件之前,您完全了解风险。

    Best Regards,

    Yohann Lu



    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2017年9月14日 7:36
    版主