社区
界面
帖子详情
如何实现所有控件的扁平效果???求教!!!!!
fengying2001
2002-12-18 10:37:15
有没有可以使所有的控件实现扁平效果?我见过有一个程序中所有的控件都有扁平效果,即鼠标放上去之后控件的下边缘和右边缘会出现立体效果!!(或者整个控件的边缘都出现立体效果)怎么实现的?有谁知道?应该是一个外部代码? 请注意是所有控件!!!!!!应该是有现成的类或是一些现成的代码!!!
...全文
59
6
打赏
收藏
如何实现所有控件的扁平效果???求教!!!!!
有没有可以使所有的控件实现扁平效果?我见过有一个程序中所有的控件都有扁平效果,即鼠标放上去之后控件的下边缘和右边缘会出现立体效果!!(或者整个控件的边缘都出现立体效果)怎么实现的?有谁知道?应该是一个外部代码? 请注意是所有控件!!!!!!应该是有现成的类或是一些现成的代码!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nonocast
2002-12-18
打赏
举报
回复
CButtonST可以实现你想要的所有功能
下载地址
http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301
搂主给分吧
zwvista
2002-12-18
打赏
举报
回复
需要提醒搂主的是,所有控件都实现此效果是不可能的,这个程序也只是做到了改写它所支持的Windows标准控件而已。这样的界面在Windows XP下面就显得丑陋,不合时宜了。
zwvista
2002-12-18
打赏
举报
回复
楼主所看到的程序应该是
http://www.codeguru.com/controls/CoolControlsLibrary.shtml
其基本思想是通过给控件的窗口函数挂钩,用自己的绘制方法来实现的,由于控件的多样性,其代码量相当大,值得学习。
fupinger
2002-12-18
打赏
举报
回复
#include "stdafx.h"
#include "Manerger.h"
#include "MyEdit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyEdit
CMyEdit::CMyEdit()
{
m_clrHilite = GetSysColor(COLOR_BTNHIGHLIGHT);
m_clrShadow = GetSysColor(COLOR_BTNSHADOW);
m_clrDkShad = GetSysColor(COLOR_3DDKSHADOW);
m_clrButton = GetSysColor(COLOR_BTNFACE);
m_bDrawGripper = TRUE;
m_bDrawSeperator = TRUE;
m_bFlatStyle = TRUE;
}
CMyEdit::~CMyEdit()
{
}
BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//{{AFX_MSG_MAP(CMyEdit)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_PAINT()
ON_WM_SYSCOLORCHANGE()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMyEdit message handlers
void CMyEdit::OnMouseMove(UINT nFlags, CPoint point)
{
SetTimer(1, 10, NULL);
CEdit::OnMouseMove(nFlags, point);
}
void CMyEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
m_bLBtnDown = true;
CEdit::OnLButtonDown(nFlags, point);
}
void CMyEdit::OnLButtonUp(UINT nFlags, CPoint point)
{
m_bLBtnDown = false;
CEdit::OnLButtonUp(nFlags, point);
}
void CMyEdit::OnTimer(UINT nIDEvent)
{
POINT pt;
GetCursorPos(&pt);
CRect rcItem;
GetWindowRect(&rcItem);
static bool bPainted = false;
if(!rcItem.PtInRect(pt)) {
KillTimer(1);
DrawEdit(FE_MOUSEOUT, m_clrButton, m_clrButton);
return;
}
else {
DrawEdit(FE_MOUSEOVER, m_clrShadow, m_clrHilite);
}
CEdit::OnTimer(nIDEvent);
}
void CMyEdit::OnPaint()
{
Default();
DrawEdit(FE_MOUSEOUT, m_clrButton, m_clrButton);
}
void CMyEdit::OnSysColorChange()
{
CEdit::OnSysColorChange();
m_clrHilite = GetSysColor(COLOR_BTNHIGHLIGHT);
m_clrShadow = GetSysColor(COLOR_BTNSHADOW);
m_clrDkShad = GetSysColor(COLOR_3DDKSHADOW);
m_clrButton = GetSysColor(COLOR_BTNFACE);
}
void CMyEdit::DrawEdit(int style, COLORREF clrTopLeft, COLORREF clrBottomRight)
{
CRect rcItem;
CRect rcGripper;
CRect rcSeperator;
GetClientRect(&rcItem);
GetClientRect(&rcGripper);
GetClientRect(&rcSeperator);
CDC* pDC = GetDC();
COLORREF clrBlack;
clrBlack = RGB(0, 0, 0);
if(m_bFlatStyle)
{
pDC->Draw3dRect(rcItem, clrTopLeft, clrBottomRight);
rcItem.InflateRect(1,1);
if (!IsWindowEnabled()) {
pDC->Draw3dRect(rcItem, m_clrHilite, m_clrHilite);
}
else {
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton);
}
rcItem.InflateRect(1,1);
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton);
rcItem.InflateRect(1,1);
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton);
rcItem.InflateRect(1,1);
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton);
rcItem.DeflateRect(4, 4);
pDC->MoveTo (rcItem.left -1,rcItem.top-1);
pDC->LineTo(rcItem.right,rcItem.top-1);
pDC->LineTo(rcItem.right,rcItem.bottom);
pDC->LineTo(rcItem.left -1,rcItem.bottom);
pDC->LineTo(rcItem.left -1,rcItem.top-1);
if (!IsWindowEnabled()) {
return;
}
if(style == FE_MOUSEOVER)
{
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton); //added this
rcItem.top -= 1; //added this
rcItem.left -= 1;
rcItem.bottom += 1;
rcItem.right += 1; //added this
pDC->Draw3dRect(rcItem, m_clrShadow, m_clrHilite); //was hilite, shadow
}
}
else
{
pDC->Draw3dRect(rcItem, clrBlack, clrBlack);
rcItem.InflateRect(1, 1);
pDC->Draw3dRect(rcItem, clrBlack, clrBlack);
pDC->Draw3dRect(rcItem, clrBlack, clrBlack);
rcItem.InflateRect(1,1);
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton);
rcItem.InflateRect(1,1);
pDC->Draw3dRect(rcItem, m_clrButton, m_clrButton);
rcItem.DeflateRect(4, 4);
if(m_bDrawGripper)
{
rcGripper.top = rcItem.top - 2;
rcGripper.bottom = rcItem.bottom + 2;
rcGripper.left -= 6;
rcGripper.right = rcGripper.left + 2;
pDC->Draw3dRect(rcGripper, clrBlack, clrBlack);
rcGripper.left -= 3;
rcGripper.right -= 3;
pDC->Draw3dRect(rcGripper, clrBlack, clrBlack);
}
if(m_bDrawSeperator)
{
rcSeperator.top = rcItem.top - 2;
rcSeperator.bottom = rcItem.bottom + 2;
rcSeperator.left = rcItem.right + 4;
rcSeperator.right = rcSeperator.left + 2;
pDC->Draw3dRect(rcSeperator, clrBlack, clrBlack);
}
}
ReleaseDC(pDC);
}
void CMyEdit::SetIndent(int margin)
{
SetMargins(margin, 1);
}
fupinger
2002-12-18
打赏
举报
回复
贴出部分代码:
// MyEdit.h : header file
//
#define FE_MOUSEOVER 1
#define FE_MOUSEOUT 2
/////////////////////////////////////////////////////////////////////////////
// CMyEdit window
class CMyEdit : public CEdit
{
// Construction
public:
CMyEdit();
bool m_bFlatStyle;
bool m_bDrawGripper;
bool m_bDrawSeperator;
// Attributes
public:
bool m_bLBtnDown;
COLORREF m_clrHilite;
COLORREF m_clrShadow;
COLORREF m_clrDkShad;
COLORREF m_clrButton;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyEdit)
//}}AFX_VIRTUAL
// Implementation
public:
void SetIndent(int margin);
void DrawEdit(int style, COLORREF clrTopLeft, COLORREF clrBottomRight);
virtual ~CMyEdit();
// Generated message map functions
protected:
//{{AFX_MSG(CMyEdit)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnPaint();
afx_msg void OnSysColorChange();
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MYEDIT_H__11086D8D_DD05_4977_A8E9_0BE5CCE562B8__INCLUDED_)
fupinger
2002-12-18
打赏
举报
回复
我做上个项目时重写了Edit,Button,CombBox三个控件,如果需要,Email
其实写出来的效果就是回到了从前的二维界面……
多年收集的 JavaScript、jQuery 插件、UI 集合,值得温故知新的前端学习旅程
多年收集的 JavaScript、jQuery 插件、UI 集合,可能已经有更好的替代技术了,但是,这是属于我的前端学习旅程,没有它,何谈提高?!
2021-12-11 WPF面试题 WPF中
控件
的分类?
WPF中
控件
的分类? WPF
控件
可以分为四类: Control: - 大部分时间使用的基本
控件
。 例如文本框、按钮等。像按钮、文本框、标签等独立
控件
的
控件
被称为内容
控件
。 还有其他
控件
可以容纳其他
控件
,例如 itemscontrols。 Itemscontrol 可以有多个文本框
控件
、标签
控件
等。 Shape: - 帮助我们创建简单的图形
控件
,如椭圆、线条、矩形等。 Panel: - 有助于对齐和定位
控件
。 例如,grid 帮助我们以表格方式对齐,stack panel 有助于水平和垂直对齐。 Conte
我要做一个WEB服务器
控件
,继承自control类,怎样
实现
在设计时可以拖拽
控件
和改变
控件
的大小??谢谢!!
我要做一个WEB服务器
控件
,继承自control类,怎样
实现
在设计时可以拖拽
控件
和改变
控件
的大小??谢谢!!
☀️个人推荐开源C++ Qt
控件
库及项目系列☀️《❤️记得收藏❤️》
☀️个人推荐开源C++ Qt
控件
库及项目系列☀️《❤️记得收藏❤️》目录 ????️????开始分享了!!!????️????????1、Qt Widgets开源
控件
库????1.1、QWidgetDemo????1.2 、Material风格
控件
库????2、Qt Widgets开源项目????2.1、Android实时投屏软件????2.2、SMTP邮件客户端(库) ????️????关注苏州程序大白,持续更新技术分享。谢谢大家支持????️???? 目录 ????️????开始分享了!!!
C#中Winform
控件
扁平
化设计
导语:在用Visual Studio进行WinForm窗体程序设计时,系统提供的窗体和其他公共
控件
看起来比较难看,随着设计风格以及人们审美的转变,用户更喜欢如下图所示
扁平
化设计风格。可以通过两种方式来让自己的界面风格变成
扁平
化风格界面。方式一、自己动手DIY 这种方式比较费力,需要有一定的基础,可以参考杨睿的一篇博客:C# winform 界面美化技巧(
扁平
化设计),自己动手做下来会...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章