具体情况是这样的:
我用ATL做了一个简单的控件,不支持MFC,主要就是用了公共属性Picture,然后重写了OnDraw函数.已经实现了.
但应用的时候图片自身的填充色和对话框不一样的颜色,很难看,如何在程序中过滤图片的填充色呢?
TransparentBlt()可以吗,如何使用是好?(不支持MFC)给个例子更好!
谢谢先.
我用ATL做了一个简单的控件,不支持MFC,主要就是用了公共属性Picture,然后重写了OnDraw函数.已经实现了.
但应用的时候图片自身的填充色和对话框不一样的颜色,很难看,如何在程序中过滤图片的填充色呢?
TransparentBlt()可以吗,如何使用是好?(不支持MFC)给个例子更好!
谢谢先.
解决方案 »
- tab控件使用这个TCS_OWNERDRAWFIXED风格//是不是就没有TCS_BOTTOM这个风格了
- MSCOMM控件只发送数据不接收数据
- 关于一个简单驱动程序的问题:CreateFile()返回失败
- 分不多了,好行人告诉一下,如何获取当前用户的sid,因为要修改注册表users键下的
- 一个简单问题,送分
- 请教利用CJLibrary制作界面的一个简单问题
- 在C/S程序中,服务器与客户机通信时,udp socket和tcp socket可同时使用吗?
- 请大家帮帮忙!!!!!!!!!!
- 数据库连接
- 高手们,在注册表的什么地方中,设置应用程序的自启动?怎么改?win2000开机时,我想看到上次使用这台机器的用户,在注册表中又怎么改?
- 如何在windows下实现10400波特率的串口通信?
- 各位,如何过滤掉位图的填充色?
这个函数的参数中,目标hdc是什么呢?参数好多阿
刚学这一块,真难啊
有朋友给个自己写的简单例子吗.
[email protected]
HRESULT OnDraw(ATL_DRAWINFO& di)
{
USES_CONVERSION;
RECT& rc = *(RECT*)di.prcBounds;
HDC hdcSrc = di.hdcDraw; // 源DC吧
//////////////////////////////////////////////////////////////////////////
//如何定义目标DC,另外加上透明函数后下面用到的DC都是hdcDesc吧
//HDC hdcDesc ...
//TransparentBlt(hdcDesc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hdcSrc,
// 0, 0, rc.right - rc.left, rc.bottom - rc.top, RGB(255, 255, 255));
/////////////////////////////////////////////////////////////////////////// // 设置背景为透明
SetBkMode(hdcSrc , TRANSPARENT);
// 以下解决图片颠倒问题,改变Y轴方向
// 设置映射模式 SetMapMode(hdcSrc , MM_ANISOTROPIC);
// 设置新的原点 POINT orgViewPoint;
SetViewportOrgEx(hdcSrc, rc.left, rc.bottom , &orgViewPoint); SIZE orgSize;
SetWindowExtEx(hdcSrc, rc.right - rc.left, -(rc.bottom - rc.top), &orgSize);
SetViewportExtEx(hdcSrc, rc.right - rc.left, rc.bottom - rc.top, &orgSize); // 显示图片 LPPICTURE pPict ;
DWORD dwAttr ;
OLE_XSIZE_HIMETRIC cxSrc;
OLE_YSIZE_HIMETRIC cySrc;
if ((m_pPicture != NULL) &&SUCCEEDED(m_pPicture->QueryInterface(IID_IPicture, (LPVOID*)&pPict)))
{
pPict->get_Attributes(&dwAttr);
if(dwAttr==S_OK)
{
pPict->get_Width(&cxSrc);
pPict->get_Height(&cySrc);
pPict->Render(hdcSrc, rc.left, rc.top, rc.right, rc.bottom, 0, 0, cxSrc, cySrc, &rc);
}
}
return S_OK;
}
// m_pPicture为添加公共属性picture后Wizard自动添加
CComPtr<IPictureDisp> m_pPicture;