需要达到此效果程序需要重载CWnd类的OnEraseBkgnd,下面列出各种样式的梯度代码
水平梯度代码
CDialog::OnEraseBkgnd(pDC);
CRect rect;
GetClientRect(&rect);
int r1=127,g1=127,b1=56; //Any start color
int r2=5,g2=55,b2=165; //Any stop color
for(int i=0;i<rect.Width();i++)
{
int r,g,b;
r = r1 + (i * (r2-r1) / rect.Width());
g = g1 + (i * (g2-g1) / rect.Width());
b = b1 + (i * (b2-b1) / rect.Width());
pDC->FillSolidRect(i,0,1,rect.Height(),RGB(r,g,b));
}
return true;
垂直梯度代码:
CDialog::OnEraseBkgnd(pDC);
CRect rect;
GetClientRect(&rect);
int r1=127,g1=127,b1=56; //Any start color
int r2=5,g2=55,b2=165; //Any stop color
for(int i=0;i<rect.Height();i++)
{
int r,g,b;
r = r1 + (i * (r2-r1) / rect.Height());
g = g1 + (i * (g2-g1) / rect.Height());
b = b1 + (i * (b2-b1) / rect.Height());
pDC->FillSolidRect(0,i,rect.Width(),1,RGB(r,g,b));
}
return true;
对角线梯度代码
CDialog::::OnEraseBkgnd(pDC);
CRect rect;
GetClientRect(&rect);
CDC dc2;
dc2.CreateCompatibleDC(pDC);
CBitmap *oldbmap=dc2.SelectObject(&m_bitmap);
/*We copy the bitmap into the DC*/
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc2,0,0,SRCCOPY);
dc2.SelectObject(oldbmap);
return true;
为了达到该目的,我们还有自建个函数MakeBitmap用于创建m_bitmap对象,该函数在OnInitDialog(Cialog)或者OnInitialUpdate(SDI)中被调用。代码如下:
void CYourClassName::MakeBitmap()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
int r1=245,g1=190,b1=240;
int r2=130,g2=0,b2=0;
int x1=0,y1=0;
int x2=0,y2=0;
CDC dc2;
dc2.CreateCompatibleDC(&dc);
if(m_bitmap.m_hObject)
m_bitmap.DeleteObject();
m_bitmap.CreateCompatibleBitmap(&dc,rect.Width(),
rect.Height());
CBitmap *oldbmap=dc2.SelectObject(&m_bitmap);
while(x1 < rect.Width() && y1 < rect.Height())
{
if(y1 < rect.Height()-1)
y1++;
else
x1++;
if(x2 < rect.Width()-1)
x2++;
else
y2++;
int r,g,b;
int i = x1+y1;
r = r1 + (i * (r2-r1) / (rect.Width()+rect.Height()));
g = g1 + (i * (g2-g1) / (rect.Width()+rect.Height()));
b = b1 + (i * (b2-b1) / (rect.Width()+rect.Height()));
CPen p(PS_SOLID,1,RGB(r,g,b));
CPen *oldpen = dc2.SelectObject(&p);
dc2.MoveTo(x1,y1);
dc2.LineTo(x2,y2);
dc2.SelectObject(oldpen);
}
dc2.SelectObject(oldbmap);
}
分享到:
相关推荐
改变对话框背景颜色
实现了用自己定义的布局,自定义修改dialog弹出框的背景
API对话框------Win32 DialogBased Application插件的安装
去掉 android dialog 白色边框
对话框 Dialog对话框是一种临时窗口,通常在不想中断整体任务流程,但又需要为用户展示信息或获得用户响应时,在页面中打开一个对话框承载相应的信息及操作。对话框
visual c++中创建一Dialog对话框后,按下一BUTTON产生另一Dialog对话框,在此对话框输入栏中输入一些信息,显示栏中就会显示出来。
Android---UI篇---Dialog(对话框)
商业编程-源码-《在Dialog中使用Menu和Toolbar》配套源代码.zip
Range-Time-Picker-Dialog Simple Android Library that provide you a custom dialog that allow you to set a start time and end time. Screenshot Install Add this to your project ...
商业编程-源码-ljh Dialog 弹出对话框控件.zip
React A11yDialog react-a11y-dialog 是一个瘦 React 组件,用于依赖于来简化 React 应用程序中可访问对话框窗口的使用。 版本兼容性: 对于 16之前的React 版本,请使用react-a11y-dialog@2.0.0 。 对于 16.8之前的...
遮罩层弹出半透明dialog,很fashion。
10-GUI(对话框Dialog).avi
Android高级应用源码-自定义列表选择Dialog,适用网络请求数据.zip
React Native Android Location Services对话框 从Android位置服务打开对话框的React-Native组件安装大多是自动安装(推荐) yarn add react-native-android-location-services-dialog-box 要么npm install react-...
ReactA11yDialog react-a11y-dialog是一个薄的React组件,依赖简化的使用,以简化React应用程序中可访问的对话框窗口的使用。 版本兼容性: 对于16之前的React版本,请使用react-a11y-dialog@2.0.0 。 对于16.8之前...
该程序在MFC实现了基于对话框模式的Dialog-based复制文件的功能,很实用
lotus domino 表单文档相关--DialogBox弹出显示表单窗口
自定义对话框样式,以及对话框的加载动画,告别Android默认丑陋的对话框!
android dialog总结Dialog整理.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。