下面阴影处理中// GetRValue(oldcolor) * alpha / 1;改成/255,怎么与/1没什么变化?????

mirroatl199 2013-01-29 09:03:01


/*========================================================================
说明: 在指定的矩形区域内绘制阴影.
==========================================================================*/
void DrawShadow(CDC *pDC, CRect rect)
{
COLORREF oldcolor = RGB(255, 255, 255);
BYTE newValR, newValG, newValB;
BYTE AlphaArray[] = {140, 170, 212, 240};
BYTE AlphaArray2[] = {170, 205, 220, 240, 240, 250, 255};

// 底部的阴影 -----------------------------------------
int i, j;
for (j = 0; j < 4; j++)
{
for (i = 6; i <= rect.right - 5; i++)
{
oldcolor = pDC->GetPixel(i, rect.bottom - (4 - j));
newValR = GetRValue(oldcolor) * AlphaArray[j] / 255;
newValG = GetGValue(oldcolor) * AlphaArray[j] / 255;
newValB = GetBValue(oldcolor) * AlphaArray[j] / 255;
pDC->SetPixel(i, rect.bottom - (4 - j), RGB(newValR, newValG, newValB));
}
}

// 右边的阴影 -----------------------------------------
for (i = 0; i < 4; i++)
{
for (j = 6; j <= rect.bottom - 5; j++)
{
oldcolor = pDC->GetPixel(rect.right - (4 - i), j);
newValR = GetRValue(oldcolor) * AlphaArray[i] / 255;
newValG = GetGValue(oldcolor) * AlphaArray[i] / 255;
newValB = GetBValue(oldcolor) * AlphaArray[i] / 255;
pDC->SetPixel(rect.right - (4 - i), j, RGB(newValR, newValG, newValB));
}
}

// 其他部位的阴影 --------------------------------------
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
if ((i + j) > 6) break;
BYTE alpha = AlphaArray2[i + j];
oldcolor = pDC->GetPixel(rect.right - 4 + i, rect.bottom - 4 + j);
newValR = GetRValue(oldcolor) * alpha / 1; //改成/255,怎么与/1没什么变化?????
newValG = GetGValue(oldcolor) * alpha / 1;
newValB = GetBValue(oldcolor) * alpha / 1;
pDC->SetPixel(rect.right - 4 + i, rect.bottom - 4 + j, RGB(newValR, newValG, newValB));

oldcolor = pDC->GetPixel(rect.right - 4 + i, rect.top + 5 - j);
newValR = GetRValue(oldcolor) * alpha / 1;
newValG = GetGValue(oldcolor) * alpha / 1;
newValB = GetBValue(oldcolor) * alpha / 1;
pDC->SetPixel(rect.right - 4 + i, rect.top + 5 - j, RGB(newValR, newValG, newValB));

oldcolor = pDC->GetPixel(rect.left - i + 5, rect.bottom - 4 + j);
newValR = GetRValue(oldcolor) * alpha / 1;
newValG = GetGValue(oldcolor) * alpha / 1;
newValB = GetBValue(oldcolor) * alpha / 1;
pDC->SetPixel(rect.left - i + 5, rect.bottom - 4 + j, RGB(newValR, newValG, newValB));
}
}
}
...全文
275 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
呵呵,来学习一下,还没有做过这个,呵呵。
mirroatl199 2013-01-31
  • 打赏
  • 举报
回复
真没有 要不发程序给你?
引用 1 楼 sha_jinhao 的回复:
AlphaArray[j] / 255; 是一个100% 到 0%之间的小数 你确定没变化!
fengbingchun 2013-01-30
  • 打赏
  • 举报
回复
二值图????
jimette 2013-01-29
  • 打赏
  • 举报
回复
AlphaArray[j] / 255; 是一个100% 到 0%之间的小数 你确定没变化!
内容概要:本文围绕“评估多目标跟踪方法”,通过Matlab代码实现,系统研究了9个高度敏捷目标在密集编队飞行的轨迹生成与测量数据模拟。研究构建了一个高保真的仿真环境,用于测试和验证多目标跟踪算法的性能,重点模拟了目标的高机动性运动行为以及受噪声影响的观测过程,涵盖了轨迹建模、传感器测量仿真、噪声注入与数据处理等关键技术环节。该仿真平台可为雷达系统、无人机集群监控、空交通管制等领域的跟踪算法研发提供标准化、可复现的实验基础,尤其适用于评估JPDA、IMM-PF、PHD滤波等先进跟踪算法在复杂动态环境下的鲁棒性与准确性。研究成果具备较强的工程应用价值和学术研究意义。; 适合人群:具备一定Matlab编程基础,从事雷达信号处理、多目标跟踪、智能监控、无人机编队控制、自动化与信息工程等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①为多目标跟踪算法(如JPDA、IMM、PHD滤波等)提供标准的高机动目标仿真测试环境;②研究密集编队下高机动目标的轨迹可观测性、测量模糊性与数据关联挑战;③支持学术论文实验部分的复现、对比分析与算法性能验证。; 阅读建议:建议结合文提供的Matlab代码深入理解轨迹动力学建模与观测模型的设计逻辑,可通过调整目标机动参数、传感器噪声水平、遮挡概率或引入多传感器融合机制,进一步拓展仿真场景,以全面评估跟踪算法在不同复杂条件下的适应性与鲁棒性。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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