SunnyUI.Net是一款针对C# .Net WinForm平台设计的开源控件库,它提供了丰富的UI元素和实用的工具类库,旨在简化Windows桌面应用程序的开发工作,提高开发效率。这款框架不仅包含了基础的控件扩展,还集成了多页面开发机制,为开发者带来更加便捷的编程体验。 一、SunnyUI.Net控件库 SunnyUI.Net的核心是其丰富的控件库,其中包括但不限于: 1. 自定义按钮:提供多种风格的按钮,如扁平化、圆角等,以满足不同设计需求。 2. 数据输入控件:包括自定义文本框、日期选择器、下拉列表等,优化了UI交互和数据验证功能。 3. 表格控件:支持自定义列宽、行高,以及丰富的数据编辑和筛选功能。 4. 树形视图:支持多层结构,方便展示和操作复杂的数据层次关系。 5. 图标和图片控件:提供多种图标选择和图片显示方式,增强界面美观度。 6. 进度条和滑块:动态反馈操作进度,增强用户体验。 二、工具类库与扩展类库 SunnyUI.Net的工具类库包含了各种常用的辅助函数,如: 1. 字符串处理:提供字符串格式化、加密解密、截取、替换等方法。 2. 数字与日期时间:方便进行数字运算、日期时间转换和比较。 3. 文件操作:支持文件的读写、复制、删除等操作。 4. 网络通信:提供HTTP、FTP等网络请求接口,便于进行数据交换。 5. 日志记录:方便开发者追踪程序运行状态,调试和定位问题。 扩展类库则对.NET Framework的基础类进行了增强,例如: 1. 对象序列化:提供了更易用的序列化和反序列化功能。 2. 线程安全:对线程锁、线程池等进行了封装,简化并发编程。 3. 配置管理:方便地读写配置文件,支持动态更改配置。 4. 错误处理:提供统一的异常处理机制,便于全局错误捕获和处理。 三、多页面开发框架 SunnyUI.Net的多页面开发框架允许开发者轻松构建具有多个工作空间的应用程序,每个工作空间可以独立承载不同的功能模块。框架特点包括: 1. 页面管理:支持动态加载和卸载页面,减少内存占用。 2. 标签切换:用户可以方便地在多个页面间切换,提升操作流畅性。 3. 数据共享:实现页面间数据的传递和共享,提高程序协同性。 4. 响应式设计:适应不同分辨率的屏幕,自动调整布局。 四、开源优势 作为开源项目,SunnyUI.Net具有以下优点: 1. 社区支持:开发者可以通过社区获取帮助,分享经验,共同进步。 2. 持续更新:开发者可以根据社区反馈不断改进和扩展框架功能。 3. 自由定制:可根据项目需求进行二次开发,满足个性化需求。 4. 免费使用:开源协议下的免费授权,降低了开发成本。 SunnyUI.Net为C# .Net WinForm应用开发提供了全面的解决方案,不仅包含丰富的控件和工具,还具备强大的多页面框架,有助于开发者快速构建高效、美观的桌面应用。同时,开源属性使得它更具灵活性和可持续性。通过学习和使用SunnyUI.Net,开发者能够提升开发效率,打造优质的WinForm应用程序。
2025-07-31 10:25:12 3.6MB SunnyUI WinForm
1
Delphi是一种广泛使用的集成开发环境(IDE),主要用于快速开发各种桌面、移动应用以及web应用。它的特色在于使用Object Pascal编程语言,以及其特有的VCL(Visual Component Library)和FMX(FireMonkey)框架。Delphi 12可能指的是在2022年发布的第12个主要版本。这个版本可能伴随着大量更新,包括对框架、工具链和性能的改进。 SUIPack则是一个第三方控件包,为Delphi环境下的开发者提供丰富的用户界面元素,以增强应用的视觉效果和用户体验。这个特定的版本号“6.4”意味着它是该控件包的第6代产品,且是这一代中的第4个主要更新。控件包通常包括各种预先设计好的用户界面组件,如按钮、图表、列表框、进度条等,这些组件可以帮助开发者减少设计和编写基础代码的时间,从而专注于应用的特定业务逻辑。 “C5D5-XE12”可能是指特定版本的Delphi开发环境,其中“XE”代表Xtreme Edition,它是Embarcadero公司推出的一款专业级的Delphi版本,其中包含了一系列先进的特性,例如支持64位应用程序的开发等。该部分还可能指出了SUIPack控件包支持的Delphi版本范围,即从Delphi 5到Delphi XE12。 “Athens”通常是一个代号或版本名称,可能用于区分同一版本控件包的不同发行或更新。在这个语境下,它特指SUIPack为Delphi XE12版本的特定发行。这表明SUIPack6.4在为Delphi XE12提供的时候,可能会有一些特化优化,以便更好地适应该版本的特定特性和API变化。 在软件开发过程中,使用第三方控件包是常见的做法。这样做可以加速开发过程,利用现有的成熟解决方案来提高软件的稳定性和开发效率。同时,这也意味着开发者不必从零开始构建所有的用户界面元素,而是可以采用现成的、经过测试的组件,并且可能还伴随着良好的文档和社区支持。 Delphi 12与SUIPack6.4 for C5D5-XE12 Athens的结合表明了开发者在追求高效开发的同时,也能够利用强大的第三方工具来丰富应用的界面和交互体验。特别是当涉及到为特定的Delphi版本进行优化时,这样的控件包可以成为开发过程中的一个宝贵资源。
2025-07-30 15:12:28 9.4MB delphi
1
Delphi是一款广泛使用的集成开发环境(IDE),主要面向Pascal语言及其Object Pascal扩展,它由Embarcadero Technologies公司开发。Delphi以其高效的开发速度和强大的功能,特别是对于数据库和用户界面的支持,受到开发者的青睐。TMS VCL Instrumentation Workshop是Delphi的一个组件套装,它提供了一系列的仪表控件,这些控件可以帮助开发者设计出美观且功能丰富的用户界面,尤其是在仪表盘和数据展示方面。 TMS VCL Instrumentation Workshop的组件包括了各种模拟和数字仪表,例如转速表、温度计、量表、滑块以及用于显示图表的控件。这些控件不仅外观精美,而且具有高度的可定制性,开发者可以根据实际需求调整控件的大小、颜色、字体以及其他视觉元素,以此来匹配应用程序的风格。 TMS VCL Instrumentation Workshop v2.8.2.1是该组件套装的更新版本,它可能包含了对现有控件的改进、新增的控件类型或者修复了之前版本中的bug,从而提高了兼容性和性能。虽然这里没有具体的文件列表来详细说明这一版本中新增或改进了哪些功能,但通常,组件套装的更新会紧跟最新的Delphi版本,提供更好的集成体验,并且对现代操作系统和硬件的兼容性也会有所增强。 由于TMS VCL Instrumentation Workshop是第三方开发的组件套装,它通常需要在Delphi的VCL框架下运行,因此,安装和使用这一组件套装的前提条件是开发者必须拥有Delphi开发环境。这些控件可以加速开发过程,减少从头编写复杂用户界面元素的工作量,特别是对于那些需要将应用程序设计得更加直观和交互性强的开发者而言,TMS VCL Instrumentation Workshop提供了一个非常有价值的资源库。 此外,组件套装在交付时一般会附带详尽的文档和示例代码,这有助于开发者快速上手并有效地将这些控件集成到自己的项目中。文档通常会详细介绍控件的属性、事件和方法,而示例代码则展示了控件的典型应用方式,这都有助于开发者更深入地理解和使用这些控件。 随着技术的发展,越来越多的开发者关注应用程序的用户体验和界面的美观程度。TMS VCL Instrumentation Workshop作为一个专门为Delphi设计的用户界面组件套装,它在帮助开发者构建复杂且视觉吸引力强的用户界面方面扮演了重要的角色,是Delphi开发者不可多得的工具资源。
2025-07-30 15:10:46 8.63MB delphi
1
在VC++编程环境中,开发一款类似Photoshop的标尺控件可以为图形界面应用程序提供精确的测量工具。本文将深入探讨如何实现这样的功能,并基于给定的标题和描述,介绍相关知识点。 "vc c++标尺控件"是指在Visual C++环境下,使用C++语言开发的一种用户界面(UI)组件,它能够显示和帮助用户进行精确的长度或位置测量。在Windows应用程序中,控件通常用于构建用户交互界面,标尺控件则特别适用于图像编辑、绘图或设计类软件,帮助用户测量和对齐元素。 Photoshop的"标尺控件"是其专业级图像处理功能的一部分,允许用户以像素或其他单位衡量图像的尺寸。在VC++中复现这一功能,我们需要创建一个自定义控件,它可以显示在窗口的边缘或者指定位置,支持水平和垂直方向的测量,并能适应窗口大小的变化。 实现这样的标尺控件,我们需要关注以下几个关键知识点: 1. **MFC(Microsoft Foundation Classes)**:MFC是微软提供的一个C++库,用于简化Windows API的使用,特别是开发Windows应用程序。在VC++中,我们可以基于MFC来创建自定义控件。 2. **自绘控件**:因为标准控件中没有直接的标尺控件,我们需要创建一个派生自CWnd或CControlBar的自定义控件,然后重写OnPaint()函数来绘制标尺的外观。 3. **单位转换**:标尺需要支持多种单位(如像素、英寸、厘米等),因此需要实现单位转换的逻辑,这涉及到数学计算和用户设置的读取。 4. **鼠标交互**:为了让用户能够通过标尺进行测量,我们需要处理鼠标消息,如WM_MOUSEMOVE,以显示当前位置的测量值。 5. **响应窗口大小改变**:当主窗口大小改变时,标尺控件需要自动调整大小和位置,保持比例和准确性。 6. **多文档界面(MDI)和单文档界面(SDI)**:根据提供的压缩包子文件名称,可能有MDI(Multiple Document Interface)和SDI(Single Document Interface)的示例代码。MDI允许在一个应用程序窗口中同时打开多个文档,而SDI每个窗口对应一个文档。在MDI和SDI应用中,标尺控件的集成和管理方式会有所不同。 7. **资源管理**:为了实现良好的用户界面,可能还需要创建资源文件(如.rc),用于定义菜单、对话框和控件的布局。 通过学习和实践这些知识点,开发者可以创建出一个功能完善的标尺控件,其效果和使用体验接近于Photoshop中的标尺。在实际开发过程中,可以参考给定的DemoSDI和DemoMDI示例代码,分析它们如何实现标尺控件的功能,并根据需求进行修改和扩展。
2025-07-30 15:03:34 143KB 标尺控件 类似photoshop标尺控件
1
《深入探索Delphi 12中的Mitov Software MegaLab 8.0控件源代码》 Mitov Software的MegaLab 8.0是一款专为Delphi 12设计的强大图形化开发工具,它提供了丰富的控件集合,帮助开发者在构建用户界面时提升效率和效果。这款控件库不仅具有强大的功能,还附带了源代码,让开发者能够深入理解其内部机制,从而更好地定制和扩展。在本篇中,我们将深入探讨这个控件库的核心特性、使用方法以及源代码的价值。 1. **核心特性** - **多样性**:MegaLab 8.0包含了各种类型的控件,如按钮、滑块、图表、进度条等,覆盖了常见的UI需求。 - **高性能**:由于是专门为Delphi 12优化的,这些控件运行效率高,响应迅速,能在各种平台上提供流畅的用户体验。 - **可视化设计**:支持Delphi的可视化组件布局,使得开发者可以通过拖放方式快速构建界面。 - **自定义能力**:源代码的开放性使得开发者可以对控件进行深度定制,满足特定项目需求。 2. **源代码的价值** - **学习与研究**:通过阅读源代码,开发者可以学习到专业级控件的设计模式和编程技巧,提高自身技能。 - **优化与扩展**:当标准功能无法满足需求时,可以直接修改源代码,增加新功能或改进现有行为。 - **问题排查**:遇到控件运行异常时,源代码能帮助开发者定位问题,快速修复。 - **代码复用**:源代码可作为代码库的一部分,为其他项目提供基础组件。 3. **使用教程** - **安装集成**:将MegaLab 8.0导入到Delphi 12环境中,使控件可见于对象浏览器。 - **控件添加**:在设计视图中,通过对象浏览器选择所需控件并拖放到表单上。 - **属性设置**:通过属性编辑器调整控件的外观和行为。 - **事件处理**:绑定事件处理函数,实现用户交互逻辑。 4. **实际应用示例** - **数据可视化**:利用图表控件展示复杂数据,例如实时性能监控图表。 - **用户交互**:使用滑块控件控制音量、亮度等,提供直观的操作方式。 - **界面美化**:通过自定义控件样式,打造独特且吸引人的用户界面。 5. **进阶话题** - **多平台支持**:了解如何利用Mitov Software MegaLab 8.0控件在iOS、Android、Windows等不同平台上保持一致的用户体验。 - **性能优化**:探讨如何通过调整源代码优化控件性能,特别是在大数据量或高并发场景下。 - **国际化与本地化**:学习如何使用MegaLab 8.0控件实现应用程序的多语言支持。 Mitov Software MegaLab 8.0 for D12 Athens Source Code不仅为Delphi 12开发者提供了丰富的图形化工具,而且通过开放源代码,鼓励开发者进行创新和深度学习,进一步提升开发效率和软件质量。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。
2025-07-30 03:46:14 31.8MB delphi
1
在Microsoft Visual C++ (VC++) 开发环境中,`TreeCtrl` 是一个常用控件,用于构建类似Windows资源管理器中的树形结构视图。在标题“VC中可多选拖拽树控件(TreeCtrl)”中,我们关注的是如何在`TreeCtrl`基础上实现多选和拖拽功能。下面将详细介绍这两个高级特性。 ### 多选功能 默认情况下,`TreeCtrl` 只支持单选模式。要启用多选,你需要在创建`TreeCtrl`时设置`TVS_CHECKBOXES`样式,这将在每个节点旁边显示复选框,允许用户通过复选框选择多个节点。此外,还需要处理`TVN_SELCHANGED`通知消息来跟踪用户的选取变化。以下代码展示了如何创建一个多选的`TreeCtrl`: ```cpp // 在资源编辑器中为你的对话框添加一个控件ID,比如IDC_TREECTRL CTreeCtrl m_treeCtrl; // 在 OnInitDialog() 函数中添加以下代码 m_treeCtrl.Create(WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_CHECKBOXES, rect, this, IDC_TREECTRL); // 设置多选模式 m_treeCtrl.SetExtendedStyle(m_treeCtrl.GetExtendedStyle() | TVS_EX_MULTISELECT); ``` ### 拖拽功能 拖拽功能需要实现`TVN_BEGINDRAG`、`TVN_BEGINRDRAG`和`TVN_ENDDRAG`等通知消息的处理。这些消息分别在拖动开始、开始右键拖动和拖动结束时触发。你需要启用`TVS_EDITLABELS`和`TVS_DISABLEDRAGDROP`样式,并在`OnInitDialog()`中初始化`TreeCtrl`的拖放功能: ```cpp m_treeCtrl.SetExtendedStyle(m_treeCtrl.GetExtendedStyle() | TVS_EDITLABELS | TVS_DISABLEDRAGDROP | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_CHECKBOXES); m_treeCtrl.EnableDragDrop(TRUE); ``` 然后,处理拖放消息: ```cpp // 在对话框类中添加消息映射 ON_NOTIFY(TVN_BEGINDRAG, IDC_TREECTRL, OnTvnBeginDrag) ON_NOTIFY(TVN_BEGINRDRAG, IDC_TREECTRL, OnTvnBeginRDrag) ON_NOTIFY(TVN_ENDDRAG, IDC_TREECTRL, OnTvnEndDrag) // 处理拖放开始 void CYourDialogClass::OnTvnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult) { NMTREEVIEW* pNMTreeView = reinterpret_cast(pNMHDR); // 实现拖动开始的逻辑,例如获取选中的节点 } // 处理右键拖放开始 void CYourDialogClass::OnTvnBeginRDrag(NMHDR* pNMHDR, LRESULT* pResult) { // 类似于OnTvnBeginDrag,但可能需要处理不同的逻辑 } // 处理拖放结束 void CYourDialogClass::OnTvnEndDrag(NMHDR* pNMHDR, LRESULT* pResult) { NMTREEVIEW* pNMTreeView = reinterpret_cast(pNMHDR); // 实现拖放结束的逻辑,例如处理目标位置的插入或移动操作 } ``` ### 示例代码 提供的压缩包文件名“MutiSelDragTree_Demo”暗示可能存在一个示例项目,展示如何实现这些功能。这个示例通常会包含一个`CMyTreeCtrl`类,继承自`CTreeCtrl`,并在其中重载消息处理函数以实现多选和拖放。它还可能包含一个对话框类,该类包含`CMyTreeCtrl`实例并处理与拖放相关的通知消息。通过查看和分析这个示例代码,你可以更深入地了解如何在实际项目中应用这些技术。 ### 总结 在VC++中,通过设置`TreeCtrl`的扩展样式和处理特定的通知消息,可以实现多选和拖拽功能。`MutiSelDragTree_Demo`应该是一个实用的示例,可以帮助你更好地理解和应用这些概念。确保仔细研究示例代码,理解其工作原理,并根据需要自定义以适应你的项目需求。
2025-07-29 21:30:53 793KB Treectrl
1
标题中的"Delphi"指的是Embarcadero Delphi,是一款广泛使用的集成开发环境(IDE),主要用于快速开发Windows应用程序。它支持面向对象的编程语言Object Pascal及其变种,同时也支持C++。Delphi以其高效性、强大的功能和易于使用而著称,尤其是其可视化的组件库和RAD(快速应用开发)模式,在开发桌面、企业、移动和Web应用程序方面有着深远的影响。 "DevExpress"则是一个知名的软件开发组件供应商,专门提供高质量的用户界面套件和应用程序框架。DevExpress VCL是该公司为Delphi环境提供的一个可视化组件库,即Visual Component Library。它包括了大量预设计的用户界面组件,帮助开发者能够快速构建美观、功能强大的应用程序。DevExpress VCL组件集使得Delphi开发人员能够避免从零开始编写界面代码,大大提高了开发效率和产品质量。 文件名中的"23.2.6 HH 24.5.2"很可能是DevExpress VCL套件的版本号。在软件开发中,版本号通常由三个或四个数字组成,分别代表主版本号、次版本号、修订号和构建号。这些数字反映了软件更新的不同阶段和内容。在这个情境下,"23.2.6"可能是主版本号、次版本号和修订号,而"HH 24.5.2"可能是构建号或特定的更新补丁标识。这样的版本号通常代表着软件的成熟度,其中主版本号表明了重大的更新和特性变化,次版本号和修订号则表示了进一步的改进和完善。 由于没有提供具体的文件名称列表,无法确定压缩包内具体包含的组件和文件结构。不过,通常这类软件的压缩包会包含安装文件、示例代码、文档和相关工具。开发者在安装这些组件时,通常会将它们集成到Delphi IDE中,通过组件面板直接拖拽使用,或是通过配置组件属性和事件来实现特定的功能。 根据Delphi和DevExpress的特性,开发者可以使用DevExpress VCL组件快速构建包含复杂数据可视化、表格、图表、报告等高端功能的应用程序,这对于那些需要快速交付具有专业外观和感觉的应用程序的开发者来说是一个巨大的福音。此外,DevExpress VCL组件还支持跨平台开发,这意味着开发者可以使用相同的代码库为不同的操作系统构建应用程序。 DevExpress VCL为Delphi开发者提供了一个功能丰富的组件库,使他们能够开发出性能强大、界面友好的应用程序。随着版本的不断更新,DevExpress也在不断地向其组件库中添加新的功能和改进,以满足现代软件开发的需求。
2025-07-29 16:14:05 440.48MB delphi
1
在VC++环境中,MFC(Microsoft Foundation Classes)库提供了一种强大的工具,使得开发者能够方便地构建Windows应用程序。本文将详细讲解"vc mfc精美的TOOLBAR控件"的相关知识点,包括TOOLBAR控件的基本概念、实现真彩色、自定义修改以及涉及的源文件功能。 TOOLBAR控件是Windows GUI应用程序中常用的一种组件,它通常用于放置按钮、分割线等,以执行特定的操作或切换不同的功能。在MFC中,CToolBar类用于封装Windows的toolbar对象,提供了一种简单的方式来创建和管理这种控件。开发者可以通过添加按钮、设置按钮属性以及响应按钮点击事件来定制toolbar的行为。 "vc mfc精美的TOOLBAR控件"提及的是一个经过优化的TOOLBAR,具有真彩色特性。在传统的toolbar中,颜色通常受到系统限制,显示为有限的灰度。而真彩色toolbar允许使用24位色彩,使按钮和其他元素的外观更加丰富和细腻,提高了用户界面的美观度。 要实现真彩色,主要涉及到CBitmap类和CImageList类的使用。CBitmap用于处理位图资源,而CImageList则可以管理一系列小图像,如toolbar按钮。开发者需要创建一个CImageList对象,然后将真彩色位图加载到其中。之后,可以通过CToolBar类的SetButtons方法,将CImageList中的图像关联到toolbar的按钮上。 在描述中提到,源代码包含完整的注释,这意味着对于初学者或想要深入了解的开发者来说,这是一个很好的学习资源。下面简要介绍每个源文件的作用: 1. Tester.cpp: 测试程序的主要代码,可能包含了主函数及测试用例。 2. MainFrm.cpp: 主框架窗口类的实现,可能包含toolbar的初始化和布局。 3. TrueColorToolBar.cpp: 真彩色toolbar的实现,可能会扩展CToolBar类,增加自定义功能。 4. TesterView.cpp: 应用程序视图类的实现,处理与视图相关的操作。 5. TesterDoc.cpp: 文档类的实现,管理数据和文档操作。 6. StdAfx.cpp: 预编译头文件的实现,加速编译过程。 7. Tester.dsp和Tester.dsw: 项目文件,用于构建和管理工程。 8. Tester.exe: 编译生成的可执行文件。 9. TesterView.h: 视图类的头文件,定义了接口和成员。 通过深入研究这些源代码,开发者不仅可以了解如何在MFC中创建和定制toolbar,还能学习到如何实现真彩色效果,以及如何扩展和注释代码,提高代码的可读性和可维护性。这是一项非常实用的技能,对于开发高质量的Windows应用程序至关重要。
2025-07-28 16:00:58 47KB mfc精美的TOOLBAR控件
1
内容概要:本文介绍了一个名为“Qt控件源码宝库”的项目,该项目提供了201个丰富的Qt控件,涵盖了从Qt4到Qt6的所有版本。这些控件不仅种类繁多,如仪表盘、进度条、温度计等,还具有零耦合的特点,便于集成到不同的项目中。此外,它们支持多种编译器和操作系统,确保了良好的跨平台兼容性。使用方式灵活多样,既可以通过设计师插件集成到Qt Creator,也可以编译成动态库或直接源码集成。每个控件配有详细的中文注释和使用demo,帮助用户快速上手并掌握自定义控件的开发技巧。 适合人群:适用于Qt开发者,尤其是那些希望提高项目效率或学习自定义控件开发的技术人员。 使用场景及目标:① 开发复杂UI界面的应用程序,如工业控制系统、医疗设备等;② 学习Qt自定义控件的开发,掌握控件设计的最佳实践;③ 快速构建跨平台应用程序,减少环境配置的时间成本。 其他说明:该控件库不仅功能强大,还提供了完善的文档和支持工具,如自定义控件属性设计器,极大地方便了用户的使用体验。
2025-07-24 14:58:33 2.96MB
1
内容概要:本文介绍了一个全面覆盖Qt4至Qt6版本的Qt控件源码库,包含201个独立且丰富的控件,涵盖仪表盘、进度条、温度计等多种类型。每个控件由独立的.h和.cpp文件构成,确保零耦合,便于集成到不同项目中。该库支持多种编译器和操作系统,提供详细的中文注释和使用示例,适用于初学者和专业开发者。此外,它还支持编译为设计师插件、动态库以及WebAssembly,极大提升了开发效率和灵活性。 适合人群:Qt开发者,尤其是希望提升界面开发效率和质量的开发者,以及初学者。 使用场景及目标:① 快速构建美观且功能强大的用户界面;② 跨平台开发,支持Windows、Linux、macOS、Android等操作系统;③ 学习自定义控件开发的最佳实践。 其他说明:该库不仅提供了丰富的控件,还附带了详细的中文注释和使用示例,帮助开发者更好地理解和使用这些控件。同时,它支持多种编译器和操作系统,确保了广泛的兼容性和灵活性。
2025-07-24 14:57:29 4.92MB
1