社区
图形处理/算法
帖子详情
有没有API可以直接使HDC变黑变暗
蒙飞鸿
2012-02-02 04:54:34
用GetDIBits,然后每个点计算,然后再SetDIBits来做的话,比较麻烦,有没有如题的API?
...全文
153
17
打赏
收藏
有没有API可以直接使HDC变黑变暗
用GetDIBits,然后每个点计算,然后再SetDIBits来做的话,比较麻烦,有没有如题的API?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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就黑了.
char
类
型
数据的
取值范围
如何确定
char
类
型
数据是计算机编程语言中只可容纳单个字符的一种基本数据类
型
,
取值范围
为-128~+127。对于上述概念相信大家都已经很熟悉了,但仍有不少同学对于
char
类
型
数据的
取值范围
抱有疑问,不知道为什么
char
类
型
数据的
取值范围
如何确定。 若要解释这个问题,首先要明确一点,这里的-128~+127所代表的是
char
和signed
char
类
型
数据的
取值范围
,对于unsigned
char
类
型
的数据,其
取值范围
为0~255。 无论是signed
char
还是unsigned ......
一个
char
类
型
变量
所能存放的数值的范围
这里的8位二进制是以补码的形式存储的,而红色数字是补码转化为原码,原码所表示的数字,所以有符号
char
的
取值范围
为。由于是无符号
char
类
型
,所以8个bit位都为有效位,他们的原,反,补码都是一样的,所以
取值范围
为。(对于1000 0000这个二进制序列没办法用取反+1来计算原码,它会被直接编译成-128),放入unsigned
char
类
型
变量
的值如果超过255就会发生截断。首先,我们知道一个
char
类
型
变量
大小为1个字节(8个bit位)
char
类
型
的
取值范围
关于
char
类
型
的
取值范围
一 所有的C语言的书籍里都会告诉你signed
char
的
取值范围
为-128 ~ 127,但是从来没有人告诉你为什么会是这样; 我们先来算算,有符号的
char
占一个字节,高位表示正负,其余的七位表示数值,七位二进制可以表示128个数(2^7 = 128),即0~127;加上符号位后,就变成了-127 ~ -0,0 ~127,这时,就会出现‘-0’这样一朵奇葩; 我对网上关于-0和-128原码相同的这种说法表示很无语; 我们知道,计算机是以补码的形式存数据的; -0和-128在计算机
signed
char
类
型
取值范围
计算
在C语言程序中,给定一个类
型
,如何计算这个类
型
变量
的
取值范围
呢?比如有一个字符
型
变量
定义如下: signed
char
c; 这个字符
变量
c的
取值范围
是【-128,127】,是计算出来的呢? 假设字符
型
变量
占用一个字节,也就是8bit。由于是“signed”,也就是有符号的,也就是可以是正数,也可以是负数,那么8bit中的最高位就是表示符号位。符号位是“1...
Java基础题37:(单选题)java中
char
类
型
的
取值范围
是() A.0 ... 32767 B.0 ... 65535
37、(单选题)java中
char
类
型
的
取值范围
是() A.0 … 32767 B.0 … 65535 C.–256 … 255 D.–32768 … 32767 【正确答案】B 【答案解析】在java中,
char
是一个无符号16位类
型
,
取值范围
为0到65535。
图形处理/算法
19,469
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章