社区
图形处理/算法
帖子详情
有没有API可以直接使HDC变黑变暗
蒙飞鸿
2012-02-02 04:54:34
用GetDIBits,然后每个点计算,然后再SetDIBits来做的话,比较麻烦,有没有如题的API?
...全文
178
17
打赏
收藏
有没有API可以直接使HDC变黑变暗
用GetDIBits,然后每个点计算,然后再SetDIBits来做的话,比较麻烦,有没有如题的API?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蒙飞鸿
2012-03-12
打赏
举报
回复
环境前提是不使用非VC6“内置”函数,用S(G)etDIBits实现了,不过11楼可能是个运行效率更好的办法。
三条猫
2012-02-07
打赏
举报
回复
楼主看看AlphaBlend这个函数,创建一个全黑的memdc,然后和原dc混合一下
三条猫
2012-02-07
打赏
举报
回复
用alpha混合一个黑的DC就行了吧?
蒙飞鸿
2012-02-07
打赏
举报
回复
[Quote=引用 13 楼 sky_kid 的回复:]
做图,用几张png设透明度不一样的图贴几次试试。
[/Quote]
贴图很耗资源,会卡
SKy_kid
2012-02-06
打赏
举报
回复
做图,用几张png设透明度不一样的图贴几次试试。
蒙飞鸿
2012-02-06
打赏
举报
回复
[Quote=引用 11 楼 lactoferrin 的回复:]
你可以用CreateDIBSection,这样就可以直接修改内容,不用GetDIBits,SetDIBits
[/Quote]
要是能贴用这个API实现的10楼的函数的代码就好了......
Lactoferrin
2012-02-06
打赏
举报
回复
你可以用CreateDIBSection,这样就可以直接修改内容,不用GetDIBits,SetDIBits
蒙飞鸿
2012-02-06
打赏
举报
回复
void MakeHDCDark(HDC& sHdc, FLOAT ratios)
{
unsigned char * pBmpBK = NULL;
HDC hDcCopy = CreateCompatibleDC(sHdc);
HBITMAP bCurBk = CreateCompatibleBitmap(sHdc, WINWIDTH, WINHEIGHT);
HBITMAP hBkOldBmp =(HBITMAP)SelectObject(hDcCopy,bCurBk);
BitBlt(hDcCopy,0,0,WINWIDTH,WINHEIGHT,sHdc,0,0,SRCCOPY);
BITMAP bmpBK;
GetObject(bCurBk,sizeof(BITMAP),&bmpBK);
BITMAPINFO bminfo1 = {0};
bminfo1.bmiHeader.biSize = sizeof(bminfo1.bmiHeader);
GetDIBits(hDcCopy,bCurBk,0,bmpBK.bmHeight,NULL,&bminfo1,DIB_RGB_COLORS);
pBmpBK = new unsigned char [bminfo1.bmiHeader.biSizeImage];
GetDIBits(hDcCopy,bCurBk,0,bmpBK.bmHeight,pBmpBK,&bminfo1,DIB_RGB_COLORS);
int size2 = bminfo1.bmiHeader.biSizeImage;
for (int i = 0; i < bminfo1.bmiHeader.biSizeImage; i ++)
{
pBmpBK[i] = pBmpBK[i] * ratios;
}
int l = SetDIBits(hDcCopy,bCurBk,0,bmpBK.bmHeight,pBmpBK,&bminfo1,DIB_RGB_COLORS);
BitBlt(sHdc,0,0,WINWIDTH,WINHEIGHT,hDcCopy,0,0,SRCCOPY);
SelectObject(hDcCopy,hBkOldBmp);
delete[] pBmpBK;
DeleteObject(bCurBk);
DeleteDC(hDcCopy);
}
/////////////////////////////////
刚刚封装了,不过感觉效率不太行,程序变得有点卡了
Lactoferrin
2012-02-06
打赏
举报
回复
你干脆自己做个函数封装GetDIBits和SetDIBits
蒙飞鸿
2012-02-06
打赏
举报
回复
[Quote=引用 7 楼 lactoferrin 的回复:]
弄个循环调用FillRect
[/Quote]
不行的,FillRect一用,就覆盖了,没有半透明渐变的效果.
Lactoferrin
2012-02-06
打赏
举报
回复
弄个循环调用FillRect
蒙飞鸿
2012-02-06
打赏
举报
回复
要变黑,是渐变啊,直接FillRect没有渐变的过程,貌似没有半透明画刷机制来通过FillRect实现
用户 昵称
2012-02-03
打赏
举报
回复
gdi里面没有对应的api,可以看看gdi+或者一些图像库里面有没有效率高的函数。
写不动代码的人
2012-02-02
打赏
举报
回复
FillSolidRect
SuperLy
2012-02-02
打赏
举报
回复
当然,如果原先不是均一色,无法填充,那就只有搞个黑bmp,或者用黑Brush之类画上去...
SuperLy
2012-02-02
打赏
举报
回复
填充黑色就可以了。
BOOL FloodFill(
HDC hdc, // handle to DC
int nXStart, // starting x-coordinate
int nYStart, // starting y-coordinate
COLORREF crFill // fill color
);
smwhotjay
2012-02-02
打赏
举报
回复
搞个黑bmp, hdc selectobj . hdc就黑了.
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例电磁波实验指导书
stm32单片机项目资料课程设计文档C语言程序代码原理图电路PCB实例电磁波实验指导书
YX8163 Datasheet-ver1.0 -cn.pdf
YX8163 Datasheet-ver1.0 -cn
基于PI双闭环解耦控制的三相电压型PWM整流器第四象限运行仿真研究(Simulink仿真实现)
内容概要:本文围绕基于PI双闭环解耦控制的三相电压型PWM整流器在第四象限运行的仿真研究展开,重点分析其在电流反向流动工况下的控制性能。通过Simulink搭建系统模型,采用电压外环与电流内环构成的双闭环PI控制策略,并引入d-q轴解耦环节以消除交叉耦合影响,实现对整流器在能量回馈状态下的高精度、稳定控制。研究涵盖了系统数学建模、控制器参数设计、解耦算法实现及动态响应仿真验证,充分展示了该控制方法在抑制扰动、提升系统鲁棒性方面的有效性。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源变流器、电能质量治理或工业传动系统开发的工程技术人员;具备自动控制理论基础和Simulink仿真能力者更佳。; 使用场景及目标:①深入掌握三相电压型PWM整流器的工作原理及其在不同运行象限的能量流动特性;②理解并实践PI双闭环控制系统的设计思路与参数整定方法;③学习d-q坐标系下电流解耦控制的实现机制;④熟练运用Simulink进行电力电子系统建模与仿真分析;⑤为实际工程中实现高效能量双向变换提供理论依据与技术参考。; 阅读建议:建议结合Simulink环境同步搭建模型,细致分析各模块的信号流向与控制逻辑,重点关注电流内环的动态跟踪能力和电压外环的稳态调节性能,可通过改变负载突变、电网电压波动等条件进行对比实验,进一步评估系统的抗干扰能力与稳定性表现。
政府科技管理者如何利用科创数智大脑实现精准产业政策匹配?.docx
政府科技管理者如何利用科创数智大脑实现精准产业政策匹配?
国央企创新负责人如何利用区域科技创新数智大脑支撑协同创新?.docx
国央企创新负责人如何利用区域科技创新数智大脑支撑协同创新?
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章