Excel中某单元格背景为红色,选中后,好像在上面蒙了一层半透明的颜色,如何实现的???

successfulmaster 2005-05-27 02:58:41
还请大侠们指教
...全文
704 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
successfulmaster 2005-05-27
  • 打赏
  • 举报
回复
barrassed(不懂多问)你也作过表格?太好了,我刚才用PHOTOSHOP取色,模拟半透明,与EXCEL的颜色怎么也对不上!
既然你模拟EXCEL作过表格,能请教个问题吗?
就是在鼠标托选的时候,怎么能实现象EXCEL一样的刷新速度?
这个时候如果全屏重绘太慢了,而且EXCEL我也看了,他的网络线是不随选中而改变颜色的,
如果用一个大的矩形直接放上,还不行,你有什么好办法吗?
barrassed 2005-05-27
  • 打赏
  • 举报
回复
Excel中是用半透明色做的吧,我做表格还参考了Excel。。你把Excel中的一个单元格设置一下背景色,然后选择一行,选择的高亮会与背景色会又叠加在一起出起半透明效果。。
successfulmaster 2005-05-27
  • 打赏
  • 举报
回复
二位的方法我明白了,我刚才试了一下,可能是我搞错了,Excel单元格选中前与选中后的颜色变色不像是用半透明的覆盖的,你们知道它是怎么处理出来的?
jerry 2005-05-27
  • 打赏
  • 举报
回复
好办. 先在一个内存 DC 上用颜色画一个适合的矩形, 然后 调用 AlphaBlend API
函数将 空虚矩形半透明地画到指定的位置.
barrassed 2005-05-27
  • 打赏
  • 举报
回复
计算有公式的。Result = src1 * alpha + src2 * (1 - alpha)
src1, src2是指颜色值, alpha是指透明度。。下面是代码,看看就明白了。

//透明色
COLORREF AlphaColor(COLORREF clrScr, COLORREF clrDest, float nAlpha)
{
int nSrcRed, nSrcGreen, nSrcBlue;
nSrcRed = GetRValue(clrScr);
nSrcGreen = GetGValue(clrScr);
nSrcBlue = GetBValue(clrScr);
int nDestRed, nDestGreen, nDestBlue;
nDestRed = GetRValue(clrDest);
nDestGreen = GetGValue(clrDest);
nDestBlue = GetBValue(clrDest);
int nResultRed, nResultGreen, nResultBlue;
nResultRed = nAlpha * nSrcRed + (1 - nAlpha) * nDestRed;
nResultGreen = nAlpha * nSrcGreen + (1 - nAlpha) * nDestGreen;
nResultBlue = nAlpha * nSrcBlue + (1 - nAlpha) * nDestBlue;

return RGB(nResultRed, nResultGreen, nResultBlue);
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧