工控编程吧
标题:
118上位机VC MFC图片浮雕效果显示
[打印本页]
作者:
qq263946146
时间:
2015-12-25 22:01
标题:
118上位机VC MFC图片浮雕效果显示
(, 下载次数: 1)
上传
点击文件名下载附件
118上位机VC MFC图片浮雕效果显示
功能展示
个别场合有用到浮雕效果的图片,我们当前例程将彩图转换成浮雕图片,效果如图;
要点提示
将图片进行浮雕效果处理,实际是将图片中每一个像素点进行处理后再显示。首先循环遍历图片的每一个像素,分别取出像素的RGB值,把这些值减去相邻像素的元素值再加上128,但相加的结果可能会小于0,或大于255,我们知道RGB的取值范围是在0—255间,所以我们再加将加减的结果再进行判断,如果小于0就让值为0,如果大于255,就让值为255,最后将三个处理后的RGB值赋予到原来的像素上,浮雕效果就实现了;
实现功能
1.新建基于对话框的应用程序
2.添加一位图再拖拽一位图控件,设置控件Id为IDC_BMP,类型设置为BITMAP,它的图片选择刚添加的位图ID;。最先将此控件关联一变量 CStatic m_Bmp;
3.添加一按钮,关联一函数OnButton1()在此函数中实现浮雕效果;
void CGkbc8Dlg::OnButton1() {CDC* pDC = m_Bmp.GetDC();
CRect rect ;
m_Bmp.GetClientRect(rect);
COLORREF color1,color2;
BYTE r,g,b;
for (int i = 0; i<rect.right;i++)
for (int j = 0;j<rect.bottom;j++)
{color1 = pDC->GetPixel(i,j);
color2 = pDC->GetPixel(i+1,j+1);
r = GetRValue(color1)-GetRValue(color2)+128;
g = GetGValue(color1)-GetGValue(color2)+128;
b = GetRValue(color1)-GetRValue(color2)+128;
r=r>255?255:r;
r=r<0?0:r;
g=g>255?255:g;
g=g<0?0:g;
b=b>255?255:b;
b=b<0?0:b;
pDC->SetPixel(i,j,RGB(r,g,b));}}
复制代码
我们来演示实现的过程
[iqiyi]http://player.video.qiyi.com/0cc21f24508b18a6192955b1e0e3d14e/0/0/w_19rt7owd1d.swf-albumId=5088364909-tvId=5088364909-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4