机器视觉入门之路(三,微软的gdi+,c++)

自从有了微软的gdi+,界面的画图和交互简单了。

我们不解释gdi+了,可以百度,我们直接示范在vs2005 c++编程中使用:

第一,在stdafx.h中添加:

#include <gdiplus.h>
using namespace Gdiplus;

第二,在你的cwinapp派生类中添加:
   public: GdiplusStartupInput m_GdiplusStartupInput;
    ULONG_PTR           m_GdiplusToken;

第三,在InitInstance()中添加:

    GdiplusStartup(&m_GdiplusToken,&m_GdiplusStartupInput,NULL);

顺便:在ExitInstance()添加:

GdiplusShutdown(m_GdiplusToken);

第四,在你的cdialog派生类Onpaint()添加:(早上在vs2013刚刚新鲜出炉,在昨天下午cdib类基础上)

    CPaintDC dc(this); // 用于绘制的设备上下文
        if (NULL != m_dib.m_Buffer)
            //if(m_dib.m_BmpLoaded==true)
        {
            Graphics graph(dc.m_hDC); ;

            Bitmap bitmap(m_dib.Width, m_dib.Height,
                m_dib.Width * 3, PixelFormat24bppRGB, m_dib.m_Buffer);
            graph.DrawImage(&bitmap, 0, 0,640,480);
        }

图像显示出来了,吃惊的是,头顶朝下(脑帽栽葱)!有点意思,有点小惊喜!

这是bmp数据格式存储的一大特点,也是规范吧,即数据是“z”倒序存储的。

这说明,函数SetDIBitsToDevice和函数StretchDIBits已经处理“z”倒序存储问题了。

另外,如果谁想在汇编语言下,显示这个24位(3*8)rgb真彩色640*480图像,我今天还有一些开悟,供参考,即使用vga-bios,即发挥bios中断调用功能,只不过是vga的bios,即显卡早期调用的通用标准,即视频电子标准协会(VESA)BIOS Extension,简称VBE,点到为止,至于汇编搞定camera,保留?

待续......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值