c++大手进,新手求助!

问题描述

c++大手进,新手求助!

c++大手帮忙,有一个方法,大手看看怎么用,再帮我推断下nEnd,nMakeSpac的意思,方法的作用是可以绘制窗体阴影,看了半天,也没理解前两个参数怎么用。winx-call是编译协议不用管,第四个参数是整型变量,后面的值是宏定义。这个方法作用是为窗口画阴影效果。

inline VOID winx_call DrawShadow(

HDC hDCIn, HDC hDCOut, const RECT& rc, const INT cxShadow = WINX_SM_CXSHADOW)

{

int x;

for ( x = 0; x < rc.right-1; x++ )

{

   int nEnd = ( x > rc.right-cxShadow*2 ) ? rc.right-cxShadow-x : cxShadow;

   for ( int y = ( x < 2 ) ? 2-x : x > rc.right-cxShadow-3 ? x-rc.right+cxShadow+3 : 0; y < nEnd; y++ )

   {

       int nMakeSpec = 78+(3-(x==0?0:(x==1?(y<2?0:1):(x==2?(y<2?y:2):y))))*5;

       COLORREF cr = ::GetPixel(hDCIn, x+cxShadow, rc.bottom-y-1);

       COLORREF cr2 = RGB(((nMakeSpec * int(GetRValue(cr))) / 100),

              ((nMakeSpec * int(GetGValue(cr))) / 100),

              ((nMakeSpec * int(GetBValue(cr))) / 100));

::SetPixel(hDCOut, x+cxShadow, rc.bottom-y-1, cr2);

   }

}

for ( x = 0; x < cxShadow; x++ )

{

   for ( int y = ( x < 2 ) ? 2-x : 0; y < rc.bottom-x-cxShadow-((x>0)?1:2); y++ )

   {

       int nMakeSpec = 78+(3-(y==0?0:(y==1?(x<2?0:1):(y==2?(x<2?x:2):x))))*5;

       COLORREF cr = ::GetPixel (hDCIn, rc.right-x-1, y+cxShadow);

       COLORREF cr2 = RGB(((nMakeSpec * int(GetRValue(cr))) / 100),

              ((nMakeSpec * int(GetGValue(cr))) / 100),

              ((nMakeSpec * int(GetBValue(cr))) / 100));

::SetPixel(hDCOut, rc.right-x-1, y+cxShadow, cr2);

   }

}

}

解决方案

nMakeSpec看上去是一个比例参数,用来控制给颜色整体增亮或者变暗
nEnd看上去是对图片y坐标进行剪裁。

解决方案二:

新手求助!!!
新手求助

解决方案三:

你要保证你调用函数传递的参数都是类型跟定义的是一致的,不然就可能会报类型不匹配。

时间: 2024-09-20 22:38:39

c++大手进,新手求助!的相关文章

程序无法运行-android大神来,新手求助

问题描述 android大神来,新手求助 做新手练习题,在添加新activity后使用intent与原activity交互,但不知道为什么程序无法运行了,console也没有错误信息,可能是哪里错了呢?是不是manifest.xml有问题呀? logcat显示错误信息如下,是否有帮助 [2013-10-15 18:52:31 - Unexpected error while launching logcat. Try reselecting the device.] device not fou

进制转换-关于codeblocks和MingGW的小问题,新手求助!!!!!!!!11

问题描述 关于codeblocks和MingGW的小问题,新手求助!!!!!!!!11 **各位求帮助 啊,我用codeblocks写了一段10进制转8进制的代码,用MinGW运行后有点奇怪的 问题.输入数字a=128时转换结果总比正常结果小1,例如169转换后 的结果是250,而不是251,应该不是代码的问题,因为我用dev编译后运行结果是正确的,小白以 为是codeblocks用的编译器的问题,但是想不通怎么会出这样的问题.跪求各位大神帮助!**

c语言-C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助

问题描述 C语言版非递归马踏棋盘·死循环了·求大神解答·小弟新手求助 这是出现死循环的代码bool solution(Move move, Pos &beginPos){ if(!move) { printf("solution Failed!"); return false; } int chessBoard[8][8] = {0}; push(move, beginPos); chessBoard[beginPos.mX][beginPos.mY] = 1; int ste

指针-求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢!

问题描述 求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢! 编译的时候,就出现了这几个错误,然后我就一直不能编译内核, 估计是指针的问题,但是我又不知道应该如何解决, 已经卡了我差不多两个星期了,一直都解决不了,跪求大神指点! 谢谢! 解决方案 在编译之前,有没有用#cp -f config_tq板的具体的名字 .config复制tq板的配置文件?

求助大神进来看下ios程序运行报错如何解决

问题描述 求助大神进来看下ios程序运行报错如何解决 解决方案 自己研究研究找找百度 解决方案二: [subDict objectForKey: removeObjectForKey:key]; 看不懂,哪有这个方法啊.

大神进来看下,新手第一天上班

问题描述 大神进来看下,新手第一天上班 怎么写动态获取数据库的信息代码 解决方案 使用ajax进行动态获取 解决方案二: $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json", data: {username:$("#username").val(), content:$("#content").val()}, dataType: "j

combox-C#或者DEV控件高手进,求助大神!呀,gridview中动态添加COMBOX后出现问题

问题描述 C#或者DEV控件高手进,求助大神!呀,gridview中动态添加COMBOX后出现问题 步骤1:我定义一个全局的COMBOX控件变量: 步骤1:我为GRIDVIEW动态添加了一列,将这一列设置我步骤1中的COMBOX: 步骤2:我为这个COMBOX添加click事件,在事件中我读取GRIDVIEW中的focusROW,读取某一列,判断该列的值来动态为COMBOX添加ITEM; 问题:在click事件中,每次都能正确的获取focusROW,也能为combox添加ITEM,但是就是COM

ios开发-新手求助各位大神,膜拜

问题描述 新手求助各位大神,膜拜 系统后台给用户的账户禁用之后,用户无法继续使用该产品直到被后台许可,跪求大神 解决方案 这个,你就从后台http接口获取用户状态,如果被禁用,那你前台就控制各个按钮不可点击,如果要实时监测是否被允许,那就定时http请求,或者,通过消息推送,由后台通知前端

已是淘宝源,可是compass还是安装失败,求大神帮助!新手求助

问题描述 已是淘宝源,可是compass还是安装失败,求大神帮助!新手求助 机子上之前装了ruby和sass,也用的淘宝源进行安装的,可是这次自己装compass就总是失败,自己看看很多安装的帖子,博文,都说在淘宝源下就可以正常的安装,可是我装了很多次,也没有成功,想学习compass,却进行不下去,求大神指导下!!!!谢谢 解决方案 淘宝源已不能用了,推荐http://ruby.sdutlinux.org/