天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 70|回复: 0

ObjectARX 构建鼠标跟随图像之acedAddSupplementalCursorImage简单实例

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
ObjectARX 2015 新增了一个api acedAddSupplementalCursorImage

                CBitmap   cbmp;
                cbmp.m_hObject=(HBITMAP)::LoadImage(NULL,_T("d:\\test.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
                BITMAP bm;
                cbmp.GetBitmap(&bm);
                int nByte=bm.bmBitsPixel /8;
                BITMAPINFO bi;
                bi.bmiHeader.biSize=sizeof(bi.bmiHeader);
                bi.bmiHeader.biWidth=bm.bmWidth;
                bi.bmiHeader.biHeight=-bm.bmHeight;
                bi.bmiHeader.biPlanes=1;
                bi.bmiHeader.biBitCount=bm.bmBitsPixel;
                bi.bmiHeader.biCompression=BI_RGB;
                bi.bmiHeader.biSizeImage=bm.bmWidth*bm.bmHeight*nByte;
                bi.bmiHeader.biClrUsed=0;
                bi.bmiHeader.biClrImportant=0;

                //获取位图数据
                HDC hdc=::GetDC(NULL);
                BYTE* pBits=(BYTE*)new BYTE[bm.bmWidth*bm.bmHeight*nByte];
                ::ZeroMemory(pBits,bm.bmWidth*bm.bmHeight*nByte);
                if(!::GetDIBits(hdc,cbmp,0,bm.bmHeight,pBits,&bi,DIB_RGB_COLORS))
                {
                        delete pBits;
                        pBits=NULL;
                }

                AcGiPixelBGRA32 *colorBlock = new AcGiPixelBGRA32[bm.bmWidth * bm.bmHeight];
                for (int i = 0; i < bm.bmWidth; i++)
                {
                        for (int j = 0; j < bm.bmHeight; j++)
                        {                               
                                //colorBlock[i*bm.bmHeight+j].setRGBA(255,255,0,255);
                                BYTE r= pBits[i*nByte+j*bm.bmWidthBytes+2];
                                BYTE g=pBits[i*nByte+j*bm.bmWidthBytes+1];
                                BYTE b=pBits[i*nByte+j*bm.bmWidthBytes+0];
                                //如果是黑色,则设置alpha通道
                                if(r==0&&g==0&&b==0)
                                {
                                        colorBlock[i+j*bm.bmHeight].setRGBA(r,g,b,0);
                                }
                                else
                                colorBlock[i+j*bm.bmHeight].setRGBA(r,g,b,255);
                        }                       
                }
                delete pBits;
                pBits=NULL;

                imageSource=new AcGiImageBGRA32(bm.bmWidth, bm.bmHeight, colorBlock);
                acedAddSupplementalCursorImage(imageSource);

                ads_name ss;
                acedSSGet(NULL,NULL,NULL,NULL,ss);

                acedRemoveSupplementalCursorImage(imageSource);
                delete imageSource;
                imageSource=NULL;

 

 

 

 

ObjectARX 构建鼠标跟随图像之acedAddSupplementalCursorImage简单实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:19 , Processed in 0.156588 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表