From d27a2d7f510c3a4b9e253dc2976ad75405677e7a Mon Sep 17 00:00:00 2001 From: Zhong Yang Date: Sun, 2 Jan 2022 23:35:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E5=88=B6=E4=BD=9C=E6=95=99?= =?UTF-8?q?=E7=A8=8B=E7=A7=BB=E5=8A=A8=E5=88=B0Wiki=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Screenshots/skin_ini.png | Bin 23969 -> 0 bytes TrafficMonitor/SkinDlg.cpp | 166 +++++++++--------- ...66\344\275\234\346\225\231\347\250\213.md" | 110 +----------- 3 files changed, 85 insertions(+), 191 deletions(-) delete mode 100644 Screenshots/skin_ini.png diff --git a/Screenshots/skin_ini.png b/Screenshots/skin_ini.png deleted file mode 100644 index cc4ffcd790de85577e8adf01cfe92d894bf33c92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23969 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 diff --git a/TrafficMonitor/SkinDlg.cpp b/TrafficMonitor/SkinDlg.cpp index bc51c4931..8bd5bd424 100644 --- a/TrafficMonitor/SkinDlg.cpp +++ b/TrafficMonitor/SkinDlg.cpp @@ -12,7 +12,7 @@ IMPLEMENT_DYNAMIC(CSkinDlg, CBaseDialog) CSkinDlg::CSkinDlg(CWnd* pParent /*=NULL*/) - : CBaseDialog(IDD_SKIN_DIALOG, pParent) + : CBaseDialog(IDD_SKIN_DIALOG, pParent) { } @@ -23,65 +23,65 @@ CSkinDlg::~CSkinDlg() CString CSkinDlg::GetDialogName() const { - return _T("SkinDlg"); + return _T("SkinDlg"); } void CSkinDlg::DoDataExchange(CDataExchange* pDX) { - CBaseDialog::DoDataExchange(pDX); - DDX_Control(pDX, IDC_COMBO1, m_select_box); - DDX_Control(pDX, IDC_SKIN_COURSE_STATIC, m_skin_course); - DDX_Control(pDX, IDC_SKIN_DOWNLOAD_STATIC, m_skin_download); - DDX_Control(pDX, IDC_PREVIEW_GROUP_STATIC, m_preview_static); - DDX_Control(pDX, IDC_NOTIFY_STATIC, m_notify_static); + CBaseDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_COMBO1, m_select_box); + DDX_Control(pDX, IDC_SKIN_COURSE_STATIC, m_skin_course); + DDX_Control(pDX, IDC_SKIN_DOWNLOAD_STATIC, m_skin_download); + DDX_Control(pDX, IDC_PREVIEW_GROUP_STATIC, m_preview_static); + DDX_Control(pDX, IDC_NOTIFY_STATIC, m_notify_static); } void CSkinDlg::ShowPreview() { - //载入布局数据 - wstring cfg_path{ theApp.m_skin_path + m_skins[m_skin_selected] + L"\\skin.xml" }; + //载入布局数据 + wstring cfg_path{ theApp.m_skin_path + m_skins[m_skin_selected] + L"\\skin.xml" }; if (!CCommon::FileExist(cfg_path.c_str())) cfg_path = theApp.m_skin_path + m_skins[m_skin_selected] + L"\\skin.ini"; m_skin_data.Load(cfg_path); - //获取预览区大小 - m_view->SetSize(m_skin_data.GetPreviewInfo().width, m_skin_data.GetPreviewInfo().height); - //刷新预览图 - m_view->Invalidate(); - - //显示皮肤作者 - SetDlgItemText(IDC_SKIN_INFO, CCommon::LoadText(IDS_SKIN_AUTHOUR, m_skin_data.GetSkinInfo().skin_author.c_str())); - //设置提示信息 - bool cover_font_setting{ !m_skin_data.GetSkinInfo().font_info.name.IsEmpty() || (m_skin_data.GetSkinInfo().font_info.size >= MIN_FONT_SIZE && m_skin_data.GetSkinInfo().font_info.size <= MAX_FONT_SIZE) }; - bool cover_str_setting{ !m_skin_data.GetSkinInfo().display_text.IsInvalid() }; - cover_font_setting = cover_font_setting && theApp.m_general_data.allow_skin_cover_font; - cover_str_setting = cover_str_setting && theApp.m_general_data.allow_skin_cover_text; - if (cover_font_setting && cover_str_setting) - m_notify_static.SetWindowTextEx(CCommon::LoadText(IDS_OVERWRITE_FONT_TEXT_WARNING)); - else if(cover_font_setting) - m_notify_static.SetWindowTextEx(CCommon::LoadText(IDS_OVERWRITE_FONT_WARNING)); - else if(cover_str_setting) - m_notify_static.SetWindowTextEx(CCommon::LoadText(IDS_OVERWRITE_TEXT_WARNING)); - else - m_notify_static.SetWindowTextEx(_T("")); + //获取预览区大小 + m_view->SetSize(m_skin_data.GetPreviewInfo().width, m_skin_data.GetPreviewInfo().height); + //刷新预览图 + m_view->Invalidate(); + + //显示皮肤作者 + SetDlgItemText(IDC_SKIN_INFO, CCommon::LoadText(IDS_SKIN_AUTHOUR, m_skin_data.GetSkinInfo().skin_author.c_str())); + //设置提示信息 + bool cover_font_setting{ !m_skin_data.GetSkinInfo().font_info.name.IsEmpty() || (m_skin_data.GetSkinInfo().font_info.size >= MIN_FONT_SIZE && m_skin_data.GetSkinInfo().font_info.size <= MAX_FONT_SIZE) }; + bool cover_str_setting{ !m_skin_data.GetSkinInfo().display_text.IsInvalid() }; + cover_font_setting = cover_font_setting && theApp.m_general_data.allow_skin_cover_font; + cover_str_setting = cover_str_setting && theApp.m_general_data.allow_skin_cover_text; + if (cover_font_setting && cover_str_setting) + m_notify_static.SetWindowTextEx(CCommon::LoadText(IDS_OVERWRITE_FONT_TEXT_WARNING)); + else if (cover_font_setting) + m_notify_static.SetWindowTextEx(CCommon::LoadText(IDS_OVERWRITE_FONT_WARNING)); + else if (cover_str_setting) + m_notify_static.SetWindowTextEx(CCommon::LoadText(IDS_OVERWRITE_TEXT_WARNING)); + else + m_notify_static.SetWindowTextEx(_T("")); } CRect CSkinDlg::CalculateViewRect() { - CRect rect; - m_preview_static.GetWindowRect(rect); //获取“预览” group box 的位置 - ScreenToClient(&rect); - CRect scroll_view_rect{ rect }; - scroll_view_rect.DeflateRect(theApp.DPI(12), theApp.DPI(40)); - scroll_view_rect.top = rect.top + theApp.DPI(28); - return scroll_view_rect; + CRect rect; + m_preview_static.GetWindowRect(rect); //获取“预览” group box 的位置 + ScreenToClient(&rect); + CRect scroll_view_rect{ rect }; + scroll_view_rect.DeflateRect(theApp.DPI(12), theApp.DPI(40)); + scroll_view_rect.top = rect.top + theApp.DPI(28); + return scroll_view_rect; } BEGIN_MESSAGE_MAP(CSkinDlg, CBaseDialog) - ON_CBN_SELCHANGE(IDC_COMBO1, &CSkinDlg::OnCbnSelchangeCombo1) - ON_WM_SIZE() + ON_CBN_SELCHANGE(IDC_COMBO1, &CSkinDlg::OnCbnSelchangeCombo1) + ON_WM_SIZE() END_MESSAGE_MAP() @@ -89,59 +89,59 @@ END_MESSAGE_MAP() BOOL CSkinDlg::OnInitDialog() { - CBaseDialog::OnInitDialog(); - - // TODO: 在此添加额外的初始化 - SetWindowText(CCommon::LoadText(IDS_TITLE_CHANGE_SKIN)); - SetIcon(theApp.GetMenuIcon(IDI_SKIN), FALSE); // 设置小图标 - //初始化选择框 - for (const auto& skin_path : m_skins) - { - wstring skin_name; - size_t index = skin_path.find_last_of(L'\\'); - skin_name = skin_path.substr(index + 1); - m_select_box.AddString(skin_name.c_str()); - } - m_select_box.SetCurSel(m_skin_selected); - m_select_box.SetMinVisibleItems(9); - //初始化预览视图 - m_view = (CSkinPreviewView*)RUNTIME_CLASS(CSkinPreviewView)->CreateObject(); - m_view->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, CalculateViewRect(), this, 3000); - m_view->InitialUpdate(); - m_view->SetSkinData(&m_skin_data); - m_view->SetFont(m_pFont); - m_view->ShowWindow(SW_SHOW); - - //设置提示信息 - m_notify_static.SetTextColor(RGB(252, 128, 45)); - m_notify_static.SetBackColor(GetSysColor(COLOR_BTNFACE)); - m_notify_static.SetWindowTextEx(_T("")); - - //显示预览图片 - ShowPreview(); - - //设置超链接 - m_skin_course.SetURL(_T("https://github.com/zhongyang219/TrafficMonitor/blob/master/皮肤制作教程.md")); - m_skin_download.SetURL(_T("https://github.com/zhongyang219/TrafficMonitorSkin/blob/master/皮肤下载.md")); - - return TRUE; // return TRUE unless you set the focus to a control - // 异常: OCX 属性页应返回 FALSE + CBaseDialog::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + SetWindowText(CCommon::LoadText(IDS_TITLE_CHANGE_SKIN)); + SetIcon(theApp.GetMenuIcon(IDI_SKIN), FALSE); // 设置小图标 + //初始化选择框 + for (const auto& skin_path : m_skins) + { + wstring skin_name; + size_t index = skin_path.find_last_of(L'\\'); + skin_name = skin_path.substr(index + 1); + m_select_box.AddString(skin_name.c_str()); + } + m_select_box.SetCurSel(m_skin_selected); + m_select_box.SetMinVisibleItems(9); + //初始化预览视图 + m_view = (CSkinPreviewView*)RUNTIME_CLASS(CSkinPreviewView)->CreateObject(); + m_view->Create(NULL, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL, CalculateViewRect(), this, 3000); + m_view->InitialUpdate(); + m_view->SetSkinData(&m_skin_data); + m_view->SetFont(m_pFont); + m_view->ShowWindow(SW_SHOW); + + //设置提示信息 + m_notify_static.SetTextColor(RGB(252, 128, 45)); + m_notify_static.SetBackColor(GetSysColor(COLOR_BTNFACE)); + m_notify_static.SetWindowTextEx(_T("")); + + //显示预览图片 + ShowPreview(); + + //设置超链接 + m_skin_course.SetURL(_T("https://github.com/zhongyang219/TrafficMonitor/wiki/%E7%9A%AE%E8%82%A4%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B")); + m_skin_download.SetURL(_T("https://github.com/zhongyang219/TrafficMonitorSkin/blob/master/皮肤下载.md")); + + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE } void CSkinDlg::OnCbnSelchangeCombo1() { - // TODO: 在此添加控件通知处理程序代码 - m_skin_selected = m_select_box.GetCurSel(); - ShowPreview(); + // TODO: 在此添加控件通知处理程序代码 + m_skin_selected = m_select_box.GetCurSel(); + ShowPreview(); } void CSkinDlg::OnSize(UINT nType, int cx, int cy) { - CBaseDialog::OnSize(nType, cx, cy); + CBaseDialog::OnSize(nType, cx, cy); - // TODO: 在此处添加消息处理程序代码 - if (m_preview_static.m_hWnd != NULL && nType != SIZE_MINIMIZED && m_view != nullptr) - m_view->MoveWindow(CalculateViewRect()); + // TODO: 在此处添加消息处理程序代码 + if (m_preview_static.m_hWnd != NULL && nType != SIZE_MINIMIZED && m_view != nullptr) + m_view->MoveWindow(CalculateViewRect()); } diff --git "a/\347\232\256\350\202\244\345\210\266\344\275\234\346\225\231\347\250\213.md" "b/\347\232\256\350\202\244\345\210\266\344\275\234\346\225\231\347\250\213.md" index 30568a17c..bca24ecca 100644 --- "a/\347\232\256\350\202\244\345\210\266\344\275\234\346\225\231\347\250\213.md" +++ "b/\347\232\256\350\202\244\345\210\266\344\275\234\346\225\231\347\250\213.md" @@ -1,110 +1,4 @@ -# TrafficMonotor 皮肤制作教程 +**皮肤制作教程已经移至Wiki页面:** -### 现已推出“TrafficMonitor皮肤编辑器”,制作皮肤更加方便![点此下载](https://github.com/zhongyang219/TrafficMonitorSkinEditor/releases)
-**相关链接:**
-TrafficMonitor皮肤编辑器使用教程:[点击此处](https://github.com/zhongyang219/TrafficMonitorSkinEditor/blob/master/README.md)
-更多皮肤下载:[点击此处](https://github.com/zhongyang219/TrafficMonitorSkin/blob/master/皮肤下载.md) +[皮肤制作教程 · zhongyang219/TrafficMonitor Wiki (github.com)](https://github.com/zhongyang219/TrafficMonitor/wiki/皮肤制作教程) ---------- - -Traffic Monitor更换皮肤,并支持自定义皮肤。皮肤文件放在程序所在目录的`skins`目录下,每个皮肤被放到单独的文件夹下,文件夹的名字就是皮肤的名称。
-如果要创建一个新的皮肤,首先在`skins`目录下新建一个文件夹,命名为皮肤的名字。制作好`background.bmp`和`background_l.bmp`两个背景图片放在里面,然后编辑skin.ini文件,`text_color`是该皮肤对应的文字颜色,它是一个WIN32的COLORREF的值,`skin_author`是用于显示到更换皮肤界面中的皮肤作者。
-你可以通过编辑skin.ini中的各个字段来指定悬浮窗的大小、要显示哪些项目,以及每个项目的大小和位置。如下图所示:
-![](./Screenshots/skin_ini.png)
-skin.ini文件中各项键值的含义如下所示:
- ->其中的“默认值”是当skin.ini文件中没有某个键时,程序获得的默认的值。
- -**[skin]节:**
- -| 键  | 含义             | 默认值 | -| ---- | --------------- | ------ | -| text_color | 文本颜色 | 0 | -| skin_author | 皮肤作者 | unknow | -| up_string | “上传”项目的显示文本 | 上传: | -| down_string | “下载”项目的显示文本 | 下载: | -| cpu_string | “CPU”项目的显示文本 | CPU: | -| memory_string | “内存”项目的显示文本 | 内存: | - -**[layout]节:**
-* 注意:V1.69及以前版本不支持[layout]节。 - - -| 键 | 含义 | 默认值 | -| ---- | --------------- | ------ | -| text_height | 每个项目的高度 | 20 | -| no_text | 不显示数值前面的“上传”、“下载”等文本 | 0 | -| preview_width | 皮肤预览图的宽度 | 238 | -| preview_height | 皮肤预览图的高度 | 105 | - -勾选“显示更多项目”时的布局: - -| 键   | 含义             | 默认值 | -| ---- | --------------- | ------ | -| width_l | 窗口的宽度 | 220 | -| height_l | 窗口的高度 | 43 | -| up_x_l | “上传”的x坐标 | 6 | -| up_y_l | “上传”的y坐标 | 2 | -| up_width_l | “上传”的宽度 | 108 | -| up_align_l | “上传”的对齐方式 | 0 | -| down_x_l | “下载”的x坐标 | 114 | -| down_y_l | “下载”的y坐标 | 2 | -| down_width_l | “下载”的宽度 | 110 | -| down_align_l | “下载”的对齐方式 | 0 | -| cpu_x_l | “CPU”的x坐标 | 6 | -| cpu_y_l | “CPU”的y坐标 | 21 | -| cpu_width_l | “CPU”的宽度 | 108 | -| cpu_align_l | “CPU”的对齐方式 | 0 | -| memory_x_l | “内存”的x坐标 | 114 | -| memory_y_l | “内存”的y坐标 | 21 | -| memory_width_l | “内存”的宽度 | 110 | -| memory_align_l | “内存”的对齐方式 | 0 | -| show_up_l | 是否显示“上传” | 1 | -| show_down_l | 是否显示“下载” | 1 | -| show_cpu_l | 是否显示“CPU” | 1 | -| show_memory_l | 是否显示“内存” | 1 | -| preview_x_l | 在“选择皮肤”界面中预览图的x坐标 | 0 | -| preview_y_l | 在“选择皮肤”界面中预览图的y坐标 | 47 | - -不勾选“显示更多项目”时的布局: - -| 键 | 含义 | 默认值 | -| ---- | --------------- | ------ | -| width_s | 窗口的宽度 | 220 | -| height_s | 窗口的高度 | 28 | -| up_x_s | “上传”的x坐标 | 6 | -| up_y_s | “上传”的y坐标 | 4 | -| up_width_s | “上传”的宽度 | 108 | -| up_align_s | “上传”的对齐方式 | 0 | -| down_x_s | “下载”的x坐标 | 114 | -| down_y_s | “下载”的y坐标 | 4 | -| down_width_s | “下载”的宽度 | 110 | -| down_align_s | “下载”的对齐方式 | 0 | -| cpu_x_s | “CPU”的x坐标 | 0 | -| cpu_y_s | “CPU”的y坐标 | 0 | -| cpu_width_s | “CPU”的宽度 | 0 | -| cpu_align_s | “CPU”的对齐方式 | 0 | -| memory_x_s | “内存”的x坐标 | 0 | -| memory_y_s | “内存”的y坐标 | 0 | -| memory_width_s | “内存”的宽度 | 0 | -| memory_align_s | “内存”的对齐方式 | 0 | -| show_up_s | 是否显示“上传” | 1 | -| show_down_s | 是否显示“下载” | 1 | -| show_cpu_s | 是否显示“CPU” | 0 | -| show_memory_s | 是否显示“内存” | 0 | -| preview_x_s | 在“选择皮肤”界面中预览图的x坐标 | 0 | -| preview_y_s | 在“选择皮肤”界面中预览图的y坐标 | 0 | - ->注:
-* 其中的对齐方式:0:左对齐;1:右对齐;2:居中 -* TrafficMonitor完美支持高DPI显示器,以上所有的字段的单位均为DPI设定为100%时的像素值,如果你的电脑的DPI设置大于100%,在显示时所有数据会根据DPI进行等比例缩放,因此,你不需要为不同的DPI设置而修改任何字段的数值。
-* 背景图片`background.bmp`和`background_l.bmp`的尺寸不需要和width_l、height_l以及width_s、height_s的值一致,但是长宽比应该一致,否则会导致拉伸变形。实际悬浮窗的大小会根据skin.ini中的指定的大小进行DPI缩放后拉伸图片。同时建议实际图片尺寸应该大于skin.ini中的指定的大小,这样可以使程序在更多高DPI显示器中也能获得清晰的显示效果。
-* 如果新增了皮肤,需要重新启动一下软件才能在“更换皮肤”界面中看到新增的皮肤。
-* 如果不需要在皮肤中指定显示的文本,请将no_text键设为0,此时`选项设置`——`主窗口设置`中的显示文本和“交换上传和下载的位置”选项不可用。 - -## 不规则形状的皮肤 -从1.71版本开始,程序支持不规则形状的皮肤。
-要制作不规则形状的皮肤,需要制作两个掩码图片:`background_mask.bmp`和`background_mask_l.bmp`。其中用白色表示需要保留的部分,黑色表示需要裁剪的问题。如下图所示。
-![](./Screenshots/skin_edit/mask_image.png)
-其中,两个掩码图片不一定要和两个背景图片尺寸一致,也不一定要和skin.ini中定义的窗口大小一致,但是最好应该和背景图片尺寸一致,且长宽比应该一致。和背景图片一样,掩码图片在被载入时会拉伸成skin.ini中设定的尺寸。
-在载入掩码图片时,程序采用的逻辑是:依次检查掩码图片的每个像素,将像素的RGB取平均值得到颜色的亮度,如果亮度值大于128,则将该像素设置为保要留的区域,反之,则设置为要裁剪的区域。