社区
界面
帖子详情
如何画一个半透明的区域
tipbridge
2003-10-20 04:36:26
我的程序中,客户区的画了一些图片,现在想在这些图片上面的部分区域rect中,画一个半透明(透明度可调)的矩形区域。
目前我用的是将屏幕中的点的象素取出来,然后和透明色进行处理,然后再写到屏幕上,但这种作图方式太慢,有没有更快的办法?
...全文
160
15
打赏
收藏
如何画一个半透明的区域
我的程序中,客户区的画了一些图片,现在想在这些图片上面的部分区域rect中,画一个半透明(透明度可调)的矩形区域。 目前我用的是将屏幕中的点的象素取出来,然后和透明色进行处理,然后再写到屏幕上,但这种作图方式太慢,有没有更快的办法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qrlvls
2003-10-27
打赏
举报
回复
CMemDC::CMemDC(CDC *pDC, int nLeft, int nTop, int nWidth, int nHeight)
{
m_pOldBitmap = NULL;
if(pDC)
m_pSrcDC = pDC;
else
m_pSrcDC = CDC::FromHandle(GetDC(NULL));
m_nLeft = nLeft;
m_nTop = nTop;
m_nWidth = nWidth;
m_nHeight = nHeight;
CreateCompatibleDC(pDC);
m_bmpMemory.CreateCompatibleBitmap(m_pSrcDC, m_nWidth, m_nHeight);
m_pOldBitmap = SelectObject(&m_bmpMemory);
BitBlt(0, 0, m_nWidth, m_nHeight, m_pSrcDC, nLeft, nTop, SRCCOPY); // 复制源位图
}
CMemDC::~CMemDC()
{
SelectObject(m_pOldBitmap);
}
void CMemDC::Draw(CDC *pDC)
{
if (pDC)
pDC->BitBlt(m_nLeft, m_nTop, m_nWidth, m_nHeight, this, 0, 0, SRCCOPY);
else
m_pSrcDC->BitBlt(m_nLeft, m_nTop, m_nWidth, m_nHeight, this, 0, 0, SRCCOPY);
}
qrlvls
2003-10-27
打赏
举报
回复
首选通过 GetDC(NULL) 获取屏幕DC句柄
然后用 CDC::FromHandle 获取一个 CDC 指针
然后通过 CDC::AlphaBlend 函数绘制
如果要画一个绿色透镜可以通过内存位置的方式,从 CDC 派生一个位图 DC 类 CMemDC
在 CMemDC 中 用 CDC::FillSolidRect 函数将内存位图填充为绿色
然后用 CMemDC::AlphaBlend 函数绘制 50% 的透明位图即可
tipbridge
2003-10-27
打赏
举报
回复
AlphaBlend函数不错,
但如何画一个 带50%的绿色透镜呢?
tipbridge
2003-10-27
打赏
举报
回复
qrlvls(忍者神牛) :
能给个例子吗?
ukyoking
2003-10-23
打赏
举报
回复
用AlphaBlend函数
roger_ding
2003-10-23
打赏
举报
回复
用mmx优化的效果比较好,网上有很多类似的代码,建议你到游戏的网站上去找找
tipbridge
2003-10-23
打赏
举报
回复
我要的是客户区域的某部分半透明化,而不是窗口半透明化呀
flyccloud
2003-10-23
打赏
举报
回复
用gdi+比较简单,很容易.要不用线程处理.
roger_ding
2003-10-23
打赏
举报
回复
其实你说的方法可行,只是你的程序可能没有优化,我也是这样实现的,在1024×768下显示很快,没有什么延迟!
gambolgs
2003-10-23
打赏
举报
回复
谢谢!
那么补充完整就是:
typedef BOOL (WINAPI * MYFUN)(HWND, COLOREF,BYTE, DWORD);
HINSTANCE hInst = LoadLibrary("User32.dll");
MYFUN fun = NULL;
fun = GetProcAddress(hInst, "SetLayeredWindowAttributes");
(*fun)(this->GetSafeHwnd(), 0, 128, 2);
FreeLibrary(hInst);
shao
2003-10-22
打赏
举报
回复
typedef BOOL (WINAPI * MYFUN)(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);
GetProcAddress(hInst, "SetLayeredWindowAttributes");
gambolgs
2003-10-22
打赏
举报
回复
刚才丛书店背了那段程序,趁没忘光把重要的部分默写出来:
typedef BOOL (WINAPI * MYFUN)(HWND, COLOREF,???, DWORD);
^^^记性太差了,这个参数类型反正是代表透明度的
HINSTANCE hInst = LoadLibrary("User32.dll");
MYFUN fun = NULL;
fun = ()GetProc(hInst, "SetLayeredWindowAttributes");
^^^^^^^^这个函数名也忘了,反正就是从库里面提取出一个函数指针.
"SetLayeredWindowAttributes" 可能是"SetLayerWindowAttributes"
(*fun)(this->GetSafeHwnd(), 0, 128, 2);
FreeLibrary(hInst);
tipbridge
2003-10-21
打赏
举报
回复
网上没有这方面的例子吗?
俺在小城市,买书很困难。
gambolgs
2003-10-20
打赏
举报
回复
蓝色的,带光盘,定价35元。
gambolgs
2003-10-20
打赏
举报
回复
win2000以上有标准库的,在人民邮电出版社的Visual C++ 编程300问上有,书名记不清了,但是名字里肯定带了“300问”这个词。
20个CSS3动
画
实战案例开发
本套课程,大喵将手把手带着大家上手精选20个纯CSS3动
画
项目精选案例项目实战,让小伙伴们能够轻松上手,企业公司项目开发过程中遇到的页面动
画
交互效果需求实现,以及一些更加炫酷创意动
画
想法的实现,成为一名酷酷哒前端开发工程师。本课程为20套CSS3动
画
实战课程,所集合构成的一套实战课程。适合热爱前端动
画
的小伙伴们,课程的主要内容包括: 01.3D文字效果制作、02.雪花飘落效果、03.图文模糊效果、04.文字卡片折叠效果、05.六角形效果、06. 进度条颜色跟随效果、07. 动态视频背景效果、08. 按键文字跳动效果、09. 弹跳小球效果、10. 3D翻折菜单导航效果、11. 3D圆环层叠动
画
效果、12. 水波浪球起伏效果、13. 遮罩透明滤镜文字效果、14. 阴阳无极八卦阵效果、15. 文字双屏进入进出效果、16. 炫酷光影加载效果、17. 文字背景水波浪效果、18. 炫酷发光倒影按钮、19. 扁平预加载动
画
效果、20. 烟囱冒烟动
画
效果
Android
画
板
半透明
画
笔 笔迹叠加效果
转载请注明出处:https://blog.csdn.net/kong_gu_you_lan 本文出自 容华谢后的博客 0.写在前面 先看下效果图,功能虽然简单,但是实现的时候谷歌、百度了很久也没有找到解决方案,提这个问题的人不少,但是回答的人
一个
也没有,十分郁闷,在此记录,分享给各位。 1.
半透明
画
笔 先按照常规的方法实现
一个
简单的
画
板: public class SketchpadView...
CSS制作
一个
半透明
边框
CSS 制作
一个
半透明
边框,background-clip 属性,如何实现
半透明
边框
matlab
画
半透明
矩形,使用matlab
画
半透明
椭圆
先上最终效果图:本来是想直接用scatter和alpha来
画
的,结果在尝试以下代码后,发现无法显示透明效果scatter(rand(1000,1),rand(1000,1), ‘filled‘);alpha(0.5)具体原因可以参考stackoverflow(http://stackoverflow.com/questions/6366404/semi-transparent-markers-in...
Android 扫一扫,绘制指定
区域
透明
区域
一、概述 在实现扫一扫的功能的时候,我们需要绘制
一个
中间为透明的扫码框,其余部分为
半透明
。通常情况下,例如微信或者支付宝的扫码框都是矩形的,如果中间的扫码框是
一个
矩形,那么布局是很简单的,可是如果扫码框是
一个
圆角矩形,或者圆形等情况怎么办呢?这篇文章主要是记录绘制
一个
中间透明带圆角的矩形。 按照惯例,我们先来看看效果图 : 二、按照流程我们就开始来看看代码啦 1、CustomDr...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章