``` ├── .gitattributes (omitted) ├── .github/ ├── FUNDING.yml ├── .gitignore (1200 tokens) ├── FFmpegFreeUI.sln (200 tokens) ├── FFmpegFreeUI/ ├── ApplicationEvents.vb (300 tokens) ├── AviSynth.avs (100 tokens) ├── FFmpegFreeUI.vbproj (400 tokens) ├── Form1.Designer.vb (19.1k tokens) ├── Form1.resx (1200 tokens) ├── Form1.vb (1800 tokens) ├── FormçÂȎ¢è£Âåª交äºÂçªÂå£.Designer.vb (4.1k tokens) ├── FormçÂȎ¢è£Âåª交äºÂçªÂå£.resx (1100 tokens) ├── FormçÂȎ¢è£Âåª交äºÂçªÂå£.vb (2.7k tokens) ├── GitHubAPI.vb (800 tokens) ├── Module1.vb (1200 tokens) ├── My Project/ ├── Application.Designer.vb (300 tokens) ├── Application.myapp (100 tokens) ├── Resources.Designer.vb (500 tokens) ├── Resources.resx (1200 tokens) ├── æÂÂé»Âä¸Âä¸ÂæÂÂèÂÂÃ¥ÂÂ.vb (100 tokens) ├── æÂÂé»Âä¸Âä¸ÂæÂÂèÂÂÃ¥ÂÂèªç»Âå¶.vb (1000 tokens) ├── æÂÂé»ÂÃ¥ÂÂ表è§Âå¾èªç»Âå¶.vb (500 tokens) ├── çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.Designer.vb (54.7k tokens) ├── çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.resx (1100 tokens) ├── çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.vb (2.7k tokens) ├── çÂÂé¢_æ··æµÂ.Designer.vb (4.3k tokens) ├── çÂÂé¢_æ··æµÂ.resx (1100 tokens) ├── çÂÂé¢_æ··æµÂ.vb ├── çÂÂé¢æÂ§å¶.vb (1700 tokens) ├── çÂÂé¢æÂ§å¶_æ·»å æÂÂä»¶.vb (800 tokens) ├── çÂÂé¢æÂ§å¶_ç¼Âç ÂéÂÂÃ¥ÂÂ.vb (900 tokens) ├── ç¼Âç Âä»»å¡.vb (4.8k tokens) ├── è§Âé¢Âç¼Âç Âå¨æÂ°æÂ®åºÂ.vb (1500 tokens) ├── é¢Â设æÂ°æÂ®ç±»åÂÂ.vb (800 tokens) ├── é¢Â设管çÂÂ.vb (7k tokens) ├── IMG/ ├── e1.png ├── e_av1_nvenc.png ├── e_h264_nvenc.png ├── e_h264_qsv.png ├── e_hevc_nvenc.png ├── e_hevc_qsv.png ├── e_svtav1.png ├── e_x264.png ├── e_x265.png ├── mi.png ├── sc.png ├── vp.png ├── LICENSE.txt (200 tokens) ├── README.md (2.1k tokens) ├── æÂ°æÂÂä¸Âå®ÂçÂÂè¿Â个/ ├── 1.å¦ÂæÂÂä½ çÂÂéÂÂæ±ÂæÂ¯ä½¿ç¨è¿Â个软件 ├── 2.èÂÂä¸ÂæÂ¯è¦Âå·¥ç¨ÂæÂÂä»¶ ├── 3.é£你就ä¸ÂéÂÂ亠├── 4.jpg ├── 5.é½æÂ¯æÂÂæÂºå®³ç ``` ## /.github/FUNDING.yml ```yml path="/.github/FUNDING.yml" custom: ['https://afdian.com/a/1059Studio'] ``` ## /.gitignore ```gitignore path="/.gitignore" ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Mono auto generated files mono_crash.* # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Ww][Ii][Nn]32/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Oo]ut/ [Ll]og/ [Ll]ogs/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUnit *.VisualState.xml TestResult.xml nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET Core project.lock.json project.fragment.lock.json artifacts/ # ASP.NET Scaffolding ScaffoldingReadMe.txt # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Coverlet is a free, cross platform Code Coverage Tool coverage*.json coverage*.xml coverage*.info # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx *.appxbundle *.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser *- [Bb]ackup.rdl *- [Bb]ackup ([0-9]).rdl *- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ # Fody - auto-generated XML schema FodyWeavers.xsd ``` ## /FFmpegFreeUI.sln ```sln path="/FFmpegFreeUI.sln" Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.14.36105.17 d17.14 MinimumVisualStudioVersion = 10.0.40219.1 Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "FFmpegFreeUI", "FFmpegFreeUI\FFmpegFreeUI.vbproj", "{106AF5C4-8109-4E33-BEDC-D5919A9B53C0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {106AF5C4-8109-4E33-BEDC-D5919A9B53C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {106AF5C4-8109-4E33-BEDC-D5919A9B53C0}.Debug|Any CPU.Build.0 = Debug|Any CPU {106AF5C4-8109-4E33-BEDC-D5919A9B53C0}.Release|Any CPU.ActiveCfg = Release|Any CPU {106AF5C4-8109-4E33-BEDC-D5919A9B53C0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0039EC5F-50F2-4731-8C77-66C7DC49F800} EndGlobalSection EndGlobal ``` ## /FFmpegFreeUI/ApplicationEvents.vb ```vb path="/FFmpegFreeUI/ApplicationEvents.vb" Imports Microsoft.VisualBasic.ApplicationServices Namespace My ' The following events are available for MyApplication: ' Startup: Raised when the application starts, before the startup form is created. ' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally. ' UnhandledException: Raised if the application encounters an unhandled exception. ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected. ' **NEW** ApplyApplicationDefaults: Raised when the application queries default values to be set for the application. ' Example: ' Private Sub MyApplication_ApplyApplicationDefaults(sender As Object, e As ApplyApplicationDefaultsEventArgs) Handles Me.ApplyApplicationDefaults ' ' ' Setting the application-wide default Font: ' e.Font = New Font(FontFamily.GenericSansSerif, 12, FontStyle.Regular) ' ' ' Setting the HighDpiMode for the Application: ' e.HighDpiMode = HighDpiMode.PerMonitorV2 ' ' ' If a splash dialog is used, this sets the minimum display time: ' e.MinimumSplashScreenDisplayTime = 4000 ' End Sub Partial Friend Class MyApplication End Class End Namespace ``` ## /FFmpegFreeUI/AviSynth.avs ```avs path="/FFmpegFreeUI/AviSynth.avs" LoadPlugin("C:\xxxx\LSMASHSource.dll") LoadPlugin("C:\xxxx\fmtconv.dll") LoadPlugin("C:\xxxx\knlmeanscl.dll") LWLibavVideoSource("<FilePath>")#读取文件中的视频流 fmtc_bitdepth(bits=16,dmode=1)#为KNLMeansCL降噪而提升位深 KNLMeansCL(d=2,a=3,s=4,h=3,channels="Y",wmode=3)#对亮度平面的降噪强度高于色度平面 KNLMeansCL(d=2,a=3,s=4,h=2,channels="UV",wmode=3)#对色度平面的降噪强度低于亮度平面 fmtc_bitdepth(bits=10,dmode=0)#为libsvtav1编码而降低位深 ``` ## /FFmpegFreeUI/FFmpegFreeUI.vbproj ```vbproj path="/FFmpegFreeUI/FFmpegFreeUI.vbproj" <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net10.0-windows</TargetFramework> <StartupObject>Sub Main</StartupObject> <UseWindowsForms>true</UseWindowsForms> <MyType>WindowsForms</MyType> <UseWPF>True</UseWPF> <PublishReadyToRun>true</PublishReadyToRun> <PublishReadyToRunEmitSymbols>true</PublishReadyToRunEmitSymbols> <SelfContained>true</SelfContained> <PublishSingleFile>true</PublishSingleFile> <Authors>1059 Studio</Authors> <Company>1059 Studio</Company> <Version>0.7</Version> </PropertyGroup> <ItemGroup> <Import Include="System.Data" /> <Import Include="System.Drawing" /> <Import Include="System.Windows.Forms" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft-WindowsAPICodePack-Shell" Version="1.1.5" /> <PackageReference Include="SunnyUI" Version="3.8.5" /> </ItemGroup> <ItemGroup> <Compile Update="My Project\Application.Designer.vb"> <DesignTime>True</DesignTime> <AutoGen>True</AutoGen> <DependentUpon>Application.myapp</DependentUpon> </Compile> <Compile Update="My Project\Resources.Designer.vb"> <DesignTime>True</DesignTime> <AutoGen>True</AutoGen> <DependentUpon>Resources.resx</DependentUpon> </Compile> </ItemGroup> <ItemGroup> <EmbeddedResource Update="My Project\Resources.resx"> <CustomToolNamespace>My.Resources</CustomToolNamespace> <Generator>VbMyResourcesResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.vb</LastGenOutput> </EmbeddedResource> </ItemGroup> <ItemGroup> <None Update="AviSynth.avs"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="My Project\Application.myapp"> <Generator>MyApplicationCodeGenerator</Generator> <LastGenOutput>Application.Designer.vb</LastGenOutput> </None> </ItemGroup> </Project> ``` ## /FFmpegFreeUI/Form1.Designer.vb ```vb path="/FFmpegFreeUI/Form1.Designer.vb" <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> Partial Class Form1 Inherits System.Windows.Forms.Form 'Form overrides dispose to clean up the component list. <System.Diagnostics.DebuggerNonUserCode()> Protected Overrides Sub Dispose(disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() components = New ComponentModel.Container() UiTabControlMenu1 = New Sunny.UI.UITabControlMenu() TabPage起始页面 = New TabPage() Panel44 = New Panel() Panel10 = New Panel() Panel11 = New Panel() UiTextBox处理器核心 = New Sunny.UI.UITextBox() Label106 = New Label() UiTextBox快捷输入CPU核心 = New Sunny.UI.UITextBox() Label28 = New Label() Label29 = New Label() Panel14 = New Panel() Panel15 = New Panel() Panel16 = New Panel() UiComboBox2 = New Sunny.UI.UIComboBox() Label12 = New Label() Label10 = New Label() Label30 = New Label() Panel7 = New Panel() Panel8 = New Panel() Label122 = New Label() Label75 = New Label() Label73 = New Label() Label65 = New Label() Label64 = New Label() Label129 = New Label() Label15 = New Label() Panel12 = New Panel() Label11 = New Label() Panel13 = New Panel() UiComboBox1 = New Sunny.UI.UIComboBox() Label137 = New Label() UiButton4 = New Sunny.UI.UIButton() Label9 = New Label() Label14 = New Label() Label21 = New Label() Panel5 = New Panel() LinkLabel6 = New LinkLabel() LinkLabel5 = New LinkLabel() LinkLabel4 = New LinkLabel() LinkLabel3 = New LinkLabel() LinkLabel2 = New LinkLabel() LinkLabel7 = New LinkLabel() Label127 = New Label() Label20 = New Label() Panel73 = New Panel() Label128 = New Label() Label126 = New Label() Label125 = New Label() Label124 = New Label() TabPage编码队列 = New TabPage() Panel56 = New Panel() ListView1 = New ListView() ColumnHeader1 = New ColumnHeader() ColumnHeader2 = New ColumnHeader() ColumnHeader3 = New ColumnHeader() ColumnHeader4 = New ColumnHeader() ColumnHeader5 = New ColumnHeader() ColumnHeader6 = New ColumnHeader() ColumnHeader7 = New ColumnHeader() ColumnHeader8 = New ColumnHeader() ImageList1 = New ImageList(components) Panel1 = New Panel() Label8 = New Label() Label7 = New Label() Label6 = New Label() Label5 = New Label() Label4 = New Label() Label3 = New Label() Label2 = New Label() Label1 = New Label() Panel41 = New Panel() Panel47 = New Panel() Label76 = New Label() Label120 = New Label() Label74 = New Label() Panel2 = New Panel() UiButton15 = New Sunny.UI.UIButton() UiButton7 = New Sunny.UI.UIButton() UiButton重新添加 = New Sunny.UI.UIButton() UiButton8 = New Sunny.UI.UIButton() UiButton9 = New Sunny.UI.UIButton() UiButton16 = New Sunny.UI.UIButton() UiButton6 = New Sunny.UI.UIButton() UiButton5 = New Sunny.UI.UIButton() UiButton2 = New Sunny.UI.UIButton() UiButton1 = New Sunny.UI.UIButton() UiButton3 = New Sunny.UI.UIButton() TabPage添加文件 = New TabPage() Panel58 = New Panel() ListView2 = New ListView() ColumnHeader9 = New ColumnHeader() Panel57 = New Panel() UiComboBox21 = New Sunny.UI.UIComboBox() Label100 = New Label() UiComboBox输出容器 = New Sunny.UI.UIComboBox() Panel3 = New Panel() Label102 = New Label() UiButton12 = New Sunny.UI.UIButton() Label18 = New Label() UiButton11 = New Sunny.UI.UIButton() Label17 = New Label() UiButton10 = New Sunny.UI.UIButton() Label24 = New Label() UiButton18 = New Sunny.UI.UIButton() Label19 = New Label() UiButton14 = New Sunny.UI.UIButton() TabPage转码压制 = New TabPage() Panel6 = New Panel() TabPage媒体信息 = New TabPage() Panel4 = New Panel() Panel76 = New Panel() Panel77 = New Panel() RichTextBox1 = New RichTextBox() Label23 = New Label() Panel9 = New Panel() Panel75 = New Panel() UiButton打开文件显示参数 = New Sunny.UI.UIButton() Label123 = New Label() Label22 = New Label() TabPageEX混流 = New TabPage() TabPageEX合并 = New TabPage() TabPageEX截取 = New TabPage() Timer1 = New Timer(components) UiTabControlMenu1.SuspendLayout() TabPage起始页面.SuspendLayout() Panel44.SuspendLayout() Panel10.SuspendLayout() Panel11.SuspendLayout() Panel15.SuspendLayout() Panel16.SuspendLayout() Panel7.SuspendLayout() Panel8.SuspendLayout() Panel12.SuspendLayout() Panel13.SuspendLayout() Panel5.SuspendLayout() Panel73.SuspendLayout() TabPage编码队列.SuspendLayout() Panel56.SuspendLayout() Panel1.SuspendLayout() Panel41.SuspendLayout() Panel47.SuspendLayout() Panel2.SuspendLayout() TabPage添加文件.SuspendLayout() Panel58.SuspendLayout() Panel57.SuspendLayout() Panel3.SuspendLayout() TabPage转码压制.SuspendLayout() TabPage媒体信息.SuspendLayout() Panel4.SuspendLayout() Panel76.SuspendLayout() Panel77.SuspendLayout() Panel9.SuspendLayout() Panel75.SuspendLayout() SuspendLayout() ' ' UiTabControlMenu1 ' UiTabControlMenu1.Alignment = TabAlignment.Left UiTabControlMenu1.Controls.Add(TabPage起始页面) UiTabControlMenu1.Controls.Add(TabPage编码队列) UiTabControlMenu1.Controls.Add(TabPage添加文件) UiTabControlMenu1.Controls.Add(TabPage转码压制) UiTabControlMenu1.Controls.Add(TabPage媒体信息) UiTabControlMenu1.Controls.Add(TabPageEX混流) UiTabControlMenu1.Controls.Add(TabPageEX合并) UiTabControlMenu1.Controls.Add(TabPageEX截取) UiTabControlMenu1.Dock = DockStyle.Fill UiTabControlMenu1.DrawMode = TabDrawMode.OwnerDrawFixed UiTabControlMenu1.FillColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) UiTabControlMenu1.Font = New Font("微软雅黑", 11F) UiTabControlMenu1.ItemSize = New Size(150, 40) UiTabControlMenu1.Location = New Point(0, 0) UiTabControlMenu1.MenuStyle = Sunny.UI.UIMenuStyle.Custom UiTabControlMenu1.Multiline = True UiTabControlMenu1.Name = "UiTabControlMenu1" UiTabControlMenu1.SelectedIndex = 0 UiTabControlMenu1.Size = New Size(1284, 761) UiTabControlMenu1.SizeMode = TabSizeMode.Fixed UiTabControlMenu1.TabIndex = 1 UiTabControlMenu1.TabSelectedColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiTabControlMenu1.TabSelectedForeColor = Color.YellowGreen UiTabControlMenu1.TabSelectedHighColor = Color.YellowGreen UiTabControlMenu1.TextAlignment = HorizontalAlignment.Left ' ' TabPage起始页面 ' TabPage起始页面.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPage起始页面.Controls.Add(Panel44) TabPage起始页面.Font = New Font("微软雅黑", 10F) TabPage起始页面.Location = New Point(151, 0) TabPage起始页面.Name = "TabPage起始页面" TabPage起始页面.Size = New Size(1133, 761) TabPage起始页面.TabIndex = 10 TabPage起始页面.Text = "3FUI" ' ' Panel44 ' Panel44.BackgroundImageLayout = ImageLayout.Stretch Panel44.Controls.Add(Panel10) Panel44.Controls.Add(Label30) Panel44.Controls.Add(Panel7) Panel44.Controls.Add(Label20) Panel44.Controls.Add(Panel73) Panel44.Dock = DockStyle.Fill Panel44.Location = New Point(0, 0) Panel44.Name = "Panel44" Panel44.Padding = New Padding(20) Panel44.Size = New Size(1133, 761) Panel44.TabIndex = 0 ' ' Panel10 ' Panel10.AutoSize = True Panel10.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel10.Controls.Add(Panel11) Panel10.Controls.Add(Label28) Panel10.Controls.Add(Label29) Panel10.Controls.Add(Panel14) Panel10.Controls.Add(Panel15) Panel10.Dock = DockStyle.Top Panel10.Location = New Point(20, 420) Panel10.Name = "Panel10" Panel10.Size = New Size(1093, 115) Panel10.TabIndex = 84 ' ' Panel11 ' Panel11.Controls.Add(UiTextBox处理器核心) Panel11.Controls.Add(Label106) Panel11.Controls.Add(UiTextBox快捷输入CPU核心) Panel11.Dock = DockStyle.Top Panel11.Location = New Point(320, 75) Panel11.Name = "Panel11" Panel11.Padding = New Padding(17, 0, 17, 10) Panel11.Size = New Size(773, 40) Panel11.TabIndex = 82 ' ' UiTextBox处理器核心 ' UiTextBox处理器核心.Dock = DockStyle.Fill UiTextBox处理器核心.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox处理器核心.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox处理器核心.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox处理器核心.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox处理器核心.Font = New Font("微软雅黑", 10F, FontStyle.Bold) UiTextBox处理器核心.ForeColor = Color.DarkGray UiTextBox处理器核心.ForeDisableColor = Color.DarkGray UiTextBox处理器核心.ForeReadOnlyColor = Color.DarkGray UiTextBox处理器核心.Location = New Point(17, 0) UiTextBox处理器核心.Margin = New Padding(4, 5, 4, 5) UiTextBox处理器核心.MinimumSize = New Size(1, 16) UiTextBox处理器核心.Name = "UiTextBox处理器核心" UiTextBox处理器核心.Padding = New Padding(5) UiTextBox处理器核心.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiTextBox处理器核心.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox处理器核心.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox处理器核心.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox处理器核心.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox处理器核心.ScrollBarColor = Color.DimGray UiTextBox处理器核心.ScrollBarStyleInherited = False UiTextBox处理器核心.ShowText = False UiTextBox处理器核心.Size = New Size(619, 30) UiTextBox处理器核心.TabIndex = 82 UiTextBox处理器核心.TextAlignment = ContentAlignment.MiddleLeft UiTextBox处理器核心.Watermark = "" UiTextBox处理器核心.WatermarkActiveColor = Color.DimGray UiTextBox处理器核心.WatermarkColor = Color.DimGray ' ' Label106 ' Label106.Dock = DockStyle.Right Label106.Location = New Point(636, 0) Label106.Name = "Label106" Label106.Size = New Size(10, 30) Label106.TabIndex = 84 ' ' UiTextBox快捷输入CPU核心 ' UiTextBox快捷输入CPU核心.Dock = DockStyle.Right UiTextBox快捷输入CPU核心.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox快捷输入CPU核心.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox快捷输入CPU核心.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox快捷输入CPU核心.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox快捷输入CPU核心.Font = New Font("微软雅黑", 10F, FontStyle.Bold) UiTextBox快捷输入CPU核心.ForeColor = Color.DarkGray UiTextBox快捷输入CPU核心.ForeDisableColor = Color.DarkGray UiTextBox快捷输入CPU核心.ForeReadOnlyColor = Color.DarkGray UiTextBox快捷输入CPU核心.Location = New Point(646, 0) UiTextBox快捷输入CPU核心.Margin = New Padding(4, 5, 4, 5) UiTextBox快捷输入CPU核心.MinimumSize = New Size(1, 16) UiTextBox快捷输入CPU核心.Name = "UiTextBox快捷输入CPU核心" UiTextBox快捷输入CPU核心.Padding = New Padding(5) UiTextBox快捷输入CPU核心.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiTextBox快捷输入CPU核心.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox快捷输入CPU核心.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox快捷输入CPU核心.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox快捷输入CPU核心.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox快捷输入CPU核心.ScrollBarColor = Color.DimGray UiTextBox快捷输入CPU核心.ScrollBarStyleInherited = False UiTextBox快捷输入CPU核心.ShowText = False UiTextBox快捷输入CPU核心.Size = New Size(110, 30) UiTextBox快捷输入CPU核心.TabIndex = 83 UiTextBox快捷输入CPU核心.TextAlignment = ContentAlignment.MiddleLeft UiTextBox快捷输入CPU核心.Watermark = "?~?,Enter" UiTextBox快捷输入CPU核心.WatermarkActiveColor = Color.DimGray UiTextBox快捷输入CPU核心.WatermarkColor = Color.DimGray ' ' Label28 ' Label28.AutoSize = True Label28.Dock = DockStyle.Top Label28.ForeColor = Color.Gray Label28.Location = New Point(320, 45) Label28.Name = "Label28" Label28.Padding = New Padding(12, 0, 0, 10) Label28.Size = New Size(582, 30) Label28.TabIndex = 10 Label28.Text = "设置 ffmpeg 能够使用哪些处理器核心,将对所有新的任务生效,每个核心索引用逗号隔开" ' ' Label29 ' Label29.AutoSize = True Label29.Dock = DockStyle.Top Label29.Font = New Font("微软雅黑", 14F) Label29.Location = New Point(320, 0) Label29.Name = "Label29" Label29.Padding = New Padding(10, 10, 0, 10) Label29.Size = New Size(98, 45) Label29.TabIndex = 9 Label29.Text = "性能调度" ' ' Panel14 ' Panel14.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) Panel14.Dock = DockStyle.Left Panel14.Location = New Point(300, 0) Panel14.Name = "Panel14" Panel14.Size = New Size(20, 115) Panel14.TabIndex = 83 ' ' Panel15 ' Panel15.Controls.Add(Panel16) Panel15.Controls.Add(Label12) Panel15.Controls.Add(Label10) Panel15.Dock = DockStyle.Left Panel15.Location = New Point(0, 0) Panel15.Name = "Panel15" Panel15.Padding = New Padding(10) Panel15.Size = New Size(300, 115) Panel15.TabIndex = 84 ' ' Panel16 ' Panel16.Controls.Add(UiComboBox2) Panel16.Dock = DockStyle.Top Panel16.Location = New Point(10, 75) Panel16.Name = "Panel16" Panel16.Padding = New Padding(7, 0, 7, 0) Panel16.Size = New Size(280, 30) Panel16.TabIndex = 83 ' ' UiComboBox2 ' UiComboBox2.DataSource = Nothing UiComboBox2.Dock = DockStyle.Top UiComboBox2.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList UiComboBox2.FillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox2.FillColor2 = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox2.FillDisableColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox2.Font = New Font("微软雅黑", 9.75F) UiComboBox2.ForeColor = Color.Silver UiComboBox2.ForeDisableColor = Color.Silver UiComboBox2.ItemFillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox2.ItemForeColor = Color.Silver UiComboBox2.ItemHeight = 30 UiComboBox2.ItemHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiComboBox2.ItemRectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiComboBox2.Items.AddRange(New Object() {"阻止休眠但允许显示器超时关闭", "阻止显示器超时关闭", "默认状态(不推荐)"}) UiComboBox2.ItemSelectBackColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox2.ItemSelectForeColor = Color.Silver UiComboBox2.Location = New Point(7, 0) UiComboBox2.Margin = New Padding(4, 5, 4, 5) UiComboBox2.MaxDropDownItems = 17 UiComboBox2.MinimumSize = New Size(63, 0) UiComboBox2.Name = "UiComboBox2" UiComboBox2.Padding = New Padding(0, 0, 30, 2) UiComboBox2.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiComboBox2.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox2.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox2.ScrollBarHandleWidth = 20 UiComboBox2.Size = New Size(266, 30) UiComboBox2.Style = Sunny.UI.UIStyle.Custom UiComboBox2.StyleDropDown = Sunny.UI.UIStyle.Black UiComboBox2.SymbolSize = 24 UiComboBox2.TabIndex = 85 UiComboBox2.TextAlignment = ContentAlignment.MiddleLeft UiComboBox2.Watermark = "" ' ' Label12 ' Label12.AutoSize = True Label12.Dock = DockStyle.Top Label12.ForeColor = Color.Gray Label12.Location = New Point(10, 45) Label12.Name = "Label12" Label12.Padding = New Padding(2, 0, 0, 10) Label12.Size = New Size(193, 30) Label12.TabIndex = 16 Label12.Text = "有任务时系统要保持什么状态" ' ' Label10 ' Label10.AutoSize = True Label10.Dock = DockStyle.Top Label10.Font = New Font("微软雅黑", 14F) Label10.Location = New Point(10, 10) Label10.Name = "Label10" Label10.Padding = New Padding(0, 0, 0, 10) Label10.Size = New Size(88, 35) Label10.TabIndex = 15 Label10.Text = "系统状态" ' ' Label30 ' Label30.Dock = DockStyle.Top Label30.Location = New Point(20, 400) Label30.Name = "Label30" Label30.Size = New Size(1093, 20) Label30.TabIndex = 85 ' ' Panel7 ' Panel7.Controls.Add(Panel8) Panel7.Controls.Add(Label15) Panel7.Controls.Add(Panel12) Panel7.Controls.Add(Label21) Panel7.Controls.Add(Panel5) Panel7.Dock = DockStyle.Top Panel7.Location = New Point(20, 170) Panel7.Name = "Panel7" Panel7.Size = New Size(1093, 230) Panel7.TabIndex = 83 ' ' Panel8 ' Panel8.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel8.Controls.Add(Label122) Panel8.Controls.Add(Label75) Panel8.Controls.Add(Label73) Panel8.Controls.Add(Label65) Panel8.Controls.Add(Label64) Panel8.Controls.Add(Label129) Panel8.Dock = DockStyle.Fill Panel8.Location = New Point(690, 0) Panel8.Name = "Panel8" Panel8.Padding = New Padding(10) Panel8.Size = New Size(403, 230) Panel8.TabIndex = 85 ' ' Label122 ' Label122.AutoSize = True Label122.Dock = DockStyle.Top Label122.Font = New Font("微软雅黑", 10F) Label122.ForeColor = Color.Gray Label122.Location = New Point(10, 153) Label122.Name = "Label122" Label122.Padding = New Padding(1, 0, 0, 7) Label122.Size = New Size(66, 27) Label122.TabIndex = 24 Label122.Text = "更新信息" ' ' Label75 ' Label75.AutoSize = True Label75.Dock = DockStyle.Top Label75.Font = New Font("微软雅黑", 10F) Label75.ForeColor = Color.Gray Label75.Location = New Point(10, 126) Label75.Name = "Label75" Label75.Padding = New Padding(1, 0, 0, 7) Label75.Size = New Size(66, 27) Label75.TabIndex = 23 Label75.Text = "更新信息" ' ' Label73 ' Label73.AutoSize = True Label73.Dock = DockStyle.Top Label73.Font = New Font("微软雅黑", 10F) Label73.ForeColor = Color.Gray Label73.Location = New Point(10, 99) Label73.Name = "Label73" Label73.Padding = New Padding(1, 0, 0, 7) Label73.Size = New Size(66, 27) Label73.TabIndex = 22 Label73.Text = "更新信息" ' ' Label65 ' Label65.AutoSize = True Label65.Dock = DockStyle.Top Label65.Font = New Font("微软雅黑", 10F) Label65.ForeColor = Color.Gray Label65.Location = New Point(10, 72) Label65.Name = "Label65" Label65.Padding = New Padding(1, 0, 0, 7) Label65.Size = New Size(66, 27) Label65.TabIndex = 21 Label65.Text = "更新信息" ' ' Label64 ' Label64.AutoSize = True Label64.Dock = DockStyle.Top Label64.Font = New Font("微软雅黑", 10F) Label64.ForeColor = Color.Gray Label64.Location = New Point(10, 45) Label64.Name = "Label64" Label64.Padding = New Padding(1, 0, 0, 7) Label64.Size = New Size(66, 27) Label64.TabIndex = 20 Label64.Text = "更新信息" ' ' Label129 ' Label129.AutoSize = True Label129.Dock = DockStyle.Top Label129.Font = New Font("微软雅黑", 14F) Label129.Location = New Point(10, 10) Label129.Name = "Label129" Label129.Padding = New Padding(0, 0, 0, 10) Label129.Size = New Size(88, 35) Label129.TabIndex = 19 Label129.Text = "检查更新" ' ' Label15 ' Label15.Dock = DockStyle.Left Label15.Location = New Point(670, 0) Label15.Name = "Label15" Label15.Size = New Size(20, 230) Label15.TabIndex = 87 ' ' Panel12 ' Panel12.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel12.Controls.Add(Label11) Panel12.Controls.Add(Panel13) Panel12.Controls.Add(Label9) Panel12.Controls.Add(Label14) Panel12.Dock = DockStyle.Left Panel12.Location = New Point(320, 0) Panel12.Name = "Panel12" Panel12.Padding = New Padding(10) Panel12.Size = New Size(350, 230) Panel12.TabIndex = 86 ' ' Label11 ' Label11.Dock = DockStyle.Fill Label11.Font = New Font("微软雅黑", 9.75F) Label11.ForeColor = Color.Gray Label11.Location = New Point(10, 105) Label11.Name = "Label11" Label11.Padding = New Padding(2, 10, 0, 10) Label11.Size = New Size(330, 115) Label11.TabIndex = 85 Label11.Text = "敏捷的棕色狐狸跳过了懒惰的狗。" & vbCrLf & "The quick brown fox jumps over the lazy dog." & vbCrLf & "@#%&*()!? 0123456789" ' ' Panel13 ' Panel13.AutoSize = True Panel13.Controls.Add(UiComboBox1) Panel13.Controls.Add(Label137) Panel13.Controls.Add(UiButton4) Panel13.Dock = DockStyle.Top Panel13.Location = New Point(10, 75) Panel13.Name = "Panel13" Panel13.Padding = New Padding(6, 0, 6, 0) Panel13.Size = New Size(330, 30) Panel13.TabIndex = 84 ' ' UiComboBox1 ' UiComboBox1.DataSource = Nothing UiComboBox1.Dock = DockStyle.Top UiComboBox1.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList UiComboBox1.FillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox1.FillColor2 = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox1.FillDisableColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox1.Font = New Font("微软雅黑", 9.75F) UiComboBox1.ForeColor = Color.Silver UiComboBox1.ForeDisableColor = Color.Silver UiComboBox1.ItemFillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox1.ItemForeColor = Color.Silver UiComboBox1.ItemHeight = 30 UiComboBox1.ItemHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiComboBox1.ItemRectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiComboBox1.ItemSelectBackColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox1.ItemSelectForeColor = Color.Silver UiComboBox1.Location = New Point(6, 0) UiComboBox1.Margin = New Padding(4, 5, 4, 5) UiComboBox1.MaxDropDownItems = 17 UiComboBox1.MinimumSize = New Size(63, 0) UiComboBox1.Name = "UiComboBox1" UiComboBox1.Padding = New Padding(0, 0, 30, 2) UiComboBox1.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiComboBox1.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox1.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox1.ScrollBarHandleWidth = 20 UiComboBox1.Size = New Size(258, 30) UiComboBox1.Style = Sunny.UI.UIStyle.Custom UiComboBox1.StyleDropDown = Sunny.UI.UIStyle.Black UiComboBox1.SymbolSize = 24 UiComboBox1.TabIndex = 84 UiComboBox1.TextAlignment = ContentAlignment.MiddleLeft UiComboBox1.Watermark = "" ' ' Label137 ' Label137.Dock = DockStyle.Right Label137.ForeColor = Color.Gray Label137.Location = New Point(264, 0) Label137.Name = "Label137" Label137.Padding = New Padding(10, 0, 0, 0) Label137.Size = New Size(10, 30) Label137.TabIndex = 85 Label137.TextAlign = ContentAlignment.MiddleLeft ' ' UiButton4 ' UiButton4.Dock = DockStyle.Right UiButton4.FillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton4.FillColor2 = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton4.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton4.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton4.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton4.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton4.Font = New Font("微软雅黑", 9F) UiButton4.ForeColor = Color.Silver UiButton4.ForeDisableColor = Color.Silver UiButton4.ForeHoverColor = Color.Silver UiButton4.ForePressColor = Color.Silver UiButton4.ForeSelectedColor = Color.Silver UiButton4.Location = New Point(274, 0) UiButton4.MinimumSize = New Size(1, 1) UiButton4.Name = "UiButton4" UiButton4.Radius = 0 UiButton4.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton4.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiButton4.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton4.RectHoverColor = Color.CornflowerBlue UiButton4.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton4.RectSelectedColor = Color.CornflowerBlue UiButton4.Size = New Size(50, 30) UiButton4.TabIndex = 86 UiButton4.Text = "OK" UiButton4.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label9 ' Label9.AutoSize = True Label9.Dock = DockStyle.Top Label9.ForeColor = Color.Gray Label9.Location = New Point(10, 45) Label9.Name = "Label9" Label9.Padding = New Padding(2, 0, 0, 10) Label9.Size = New Size(235, 30) Label9.TabIndex = 20 Label9.Text = "创建 FontName.txt 来保存字体设置" ' ' Label14 ' Label14.AutoSize = True Label14.Dock = DockStyle.Top Label14.Font = New Font("微软雅黑", 14F) Label14.Location = New Point(10, 10) Label14.Name = "Label14" Label14.Padding = New Padding(0, 0, 0, 10) Label14.Size = New Size(50, 35) Label14.TabIndex = 19 Label14.Text = "字体" ' ' Label21 ' Label21.Dock = DockStyle.Left Label21.Location = New Point(300, 0) Label21.Name = "Label21" Label21.Size = New Size(20, 230) Label21.TabIndex = 84 ' ' Panel5 ' Panel5.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel5.Controls.Add(LinkLabel6) Panel5.Controls.Add(LinkLabel5) Panel5.Controls.Add(LinkLabel4) Panel5.Controls.Add(LinkLabel3) Panel5.Controls.Add(LinkLabel2) Panel5.Controls.Add(LinkLabel7) Panel5.Controls.Add(Label127) Panel5.Dock = DockStyle.Left Panel5.Location = New Point(0, 0) Panel5.Name = "Panel5" Panel5.Padding = New Padding(10) Panel5.Size = New Size(300, 230) Panel5.TabIndex = 83 ' ' LinkLabel6 ' LinkLabel6.ActiveLinkColor = Color.Orchid LinkLabel6.AutoSize = True LinkLabel6.Dock = DockStyle.Top LinkLabel6.LinkBehavior = LinkBehavior.HoverUnderline LinkLabel6.LinkColor = Color.Orchid LinkLabel6.Location = New Point(10, 180) LinkLabel6.Name = "LinkLabel6" LinkLabel6.Padding = New Padding(2, 5, 0, 0) LinkLabel6.Size = New Size(179, 25) LinkLabel6.TabIndex = 19 LinkLabel6.TabStop = True LinkLabel6.Text = "查看作者主页(哔哩哔哩)" ' ' LinkLabel5 ' LinkLabel5.ActiveLinkColor = Color.MediumPurple LinkLabel5.AutoSize = True LinkLabel5.Dock = DockStyle.Top LinkLabel5.LinkBehavior = LinkBehavior.HoverUnderline LinkLabel5.LinkColor = Color.MediumPurple LinkLabel5.Location = New Point(10, 140) LinkLabel5.Name = "LinkLabel5" LinkLabel5.Padding = New Padding(2, 20, 0, 0) LinkLabel5.Size = New Size(138, 40) LinkLabel5.TabIndex = 18 LinkLabel5.TabStop = True LinkLabel5.Text = "赞助一下(afdian)" ' ' LinkLabel4 ' LinkLabel4.ActiveLinkColor = Color.OliveDrab LinkLabel4.AutoSize = True LinkLabel4.Dock = DockStyle.Top LinkLabel4.LinkBehavior = LinkBehavior.HoverUnderline LinkLabel4.LinkColor = Color.OliveDrab LinkLabel4.Location = New Point(10, 115) LinkLabel4.Name = "LinkLabel4" LinkLabel4.Padding = New Padding(2, 5, 0, 0) LinkLabel4.Size = New Size(158, 25) LinkLabel4.TabIndex = 17 LinkLabel4.TabStop = True LinkLabel4.Text = "下载 FFmpeg(BtbN)" ' ' LinkLabel3 ' LinkLabel3.ActiveLinkColor = Color.OliveDrab LinkLabel3.AutoSize = True LinkLabel3.Dock = DockStyle.Top LinkLabel3.LinkBehavior = LinkBehavior.HoverUnderline LinkLabel3.LinkColor = Color.OliveDrab LinkLabel3.Location = New Point(10, 90) LinkLabel3.Name = "LinkLabel3" LinkLabel3.Padding = New Padding(2, 5, 0, 0) LinkLabel3.Size = New Size(184, 25) LinkLabel3.TabIndex = 16 LinkLabel3.TabStop = True LinkLabel3.Text = "下载 FFmpeg(gyan.dev)" ' ' LinkLabel2 ' LinkLabel2.ActiveLinkColor = Color.OliveDrab LinkLabel2.AutoSize = True LinkLabel2.Dock = DockStyle.Top LinkLabel2.LinkBehavior = LinkBehavior.HoverUnderline LinkLabel2.LinkColor = Color.OliveDrab LinkLabel2.Location = New Point(10, 65) LinkLabel2.Name = "LinkLabel2" LinkLabel2.Padding = New Padding(2, 5, 0, 0) LinkLabel2.Size = New Size(227, 25) LinkLabel2.TabIndex = 15 LinkLabel2.TabStop = True LinkLabel2.Text = "FFmpeg 官方文档(ffmpeg.org)" ' ' LinkLabel7 ' LinkLabel7.ActiveLinkColor = Color.OliveDrab LinkLabel7.AutoSize = True LinkLabel7.Dock = DockStyle.Top LinkLabel7.LinkBehavior = LinkBehavior.HoverUnderline LinkLabel7.LinkColor = Color.OliveDrab LinkLabel7.Location = New Point(10, 45) LinkLabel7.Name = "LinkLabel7" LinkLabel7.Padding = New Padding(2, 0, 0, 0) LinkLabel7.Size = New Size(91, 20) LinkLabel7.TabIndex = 20 LinkLabel7.TabStop = True LinkLabel7.Text = "GitHub 仓库" ' ' Label127 ' Label127.AutoSize = True Label127.Dock = DockStyle.Top Label127.Font = New Font("微软雅黑", 14F) Label127.Location = New Point(10, 10) Label127.Name = "Label127" Label127.Padding = New Padding(0, 0, 0, 10) Label127.Size = New Size(107, 35) Label127.TabIndex = 14 Label127.Text = "链接和文档" ' ' Label20 ' Label20.Dock = DockStyle.Top Label20.Location = New Point(20, 150) Label20.Name = "Label20" Label20.Size = New Size(1093, 20) Label20.TabIndex = 81 ' ' Panel73 ' Panel73.AutoSize = True Panel73.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel73.Controls.Add(Label128) Panel73.Controls.Add(Label126) Panel73.Controls.Add(Label125) Panel73.Controls.Add(Label124) Panel73.Dock = DockStyle.Top Panel73.Location = New Point(20, 20) Panel73.Name = "Panel73" Panel73.Padding = New Padding(10) Panel73.Size = New Size(1093, 130) Panel73.TabIndex = 80 ' ' Label128 ' Label128.AutoSize = True Label128.Dock = DockStyle.Top Label128.ForeColor = Color.CornflowerBlue Label128.Location = New Point(10, 90) Label128.Name = "Label128" Label128.Padding = New Padding(2, 5, 0, 5) Label128.Size = New Size(411, 30) Label128.TabIndex = 12 Label128.Text = "将 ffmpeg.exe 加入环境变量或放置于 3FUI 程序目录下即可调用" ' ' Label126 ' Label126.AutoSize = True Label126.Dock = DockStyle.Top Label126.ForeColor = Color.Gray Label126.Location = New Point(10, 65) Label126.Name = "Label126" Label126.Padding = New Padding(2, 5, 0, 0) Label126.Size = New Size(305, 25) Label126.TabIndex = 11 Label126.Text = "将转码的自由还给用户,无套路,专注写命令行" ' ' Label125 ' Label125.AutoSize = True Label125.Dock = DockStyle.Top Label125.ForeColor = Color.Gray Label125.Location = New Point(10, 45) Label125.Name = "Label125" Label125.Padding = New Padding(2, 0, 0, 0) Label125.Size = New Size(561, 20) Label125.TabIndex = 10 Label125.Text = "由 1059 Studio 开发的 3FUI 是一款真正专业、完全免费、高度自由的 FFmpeg 交互外壳" ' ' Label124 ' Label124.AutoSize = True Label124.Dock = DockStyle.Top Label124.Font = New Font("微软雅黑", 14F) Label124.Location = New Point(10, 10) Label124.Name = "Label124" Label124.Padding = New Padding(0, 0, 0, 10) Label124.Size = New Size(233, 35) Label124.TabIndex = 9 Label124.Text = "FFmpegFreeUI v0.7 EA 2" ' ' TabPage编码队列 ' TabPage编码队列.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPage编码队列.Controls.Add(Panel56) TabPage编码队列.Controls.Add(Panel1) TabPage编码队列.Controls.Add(Panel41) TabPage编码队列.Controls.Add(Panel2) TabPage编码队列.Font = New Font("微软雅黑", 10F) TabPage编码队列.Location = New Point(151, 0) TabPage编码队列.Name = "TabPage编码队列" TabPage编码队列.Size = New Size(1133, 761) TabPage编码队列.TabIndex = 0 TabPage编码队列.Text = "编码队列" ' ' Panel56 ' Panel56.Controls.Add(ListView1) Panel56.Dock = DockStyle.Fill Panel56.Location = New Point(0, 90) Panel56.Name = "Panel56" Panel56.Padding = New Padding(10, 10, 0, 10) Panel56.Size = New Size(1133, 511) Panel56.TabIndex = 4 ' ' ListView1 ' ListView1.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) ListView1.BorderStyle = BorderStyle.None ListView1.Columns.AddRange(New ColumnHeader() {ColumnHeader1, ColumnHeader2, ColumnHeader3, ColumnHeader4, ColumnHeader5, ColumnHeader6, ColumnHeader7, ColumnHeader8}) ListView1.Dock = DockStyle.Fill ListView1.ForeColor = Color.Silver ListView1.FullRowSelect = True ListView1.HeaderStyle = ColumnHeaderStyle.None ListView1.Location = New Point(10, 10) ListView1.Name = "ListView1" ListView1.OwnerDraw = True ListView1.ShowItemToolTips = True ListView1.Size = New Size(1123, 491) ListView1.StateImageList = ImageList1 ListView1.TabIndex = 0 ListView1.TabStop = False ListView1.UseCompatibleStateImageBehavior = False ListView1.View = View.Details ' ' ImageList1 ' ImageList1.ColorDepth = ColorDepth.Depth32Bit ImageList1.ImageSize = New Size(1, 30) ImageList1.TransparentColor = Color.Transparent ' ' Panel1 ' Panel1.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel1.Controls.Add(Label8) Panel1.Controls.Add(Label7) Panel1.Controls.Add(Label6) Panel1.Controls.Add(Label5) Panel1.Controls.Add(Label4) Panel1.Controls.Add(Label3) Panel1.Controls.Add(Label2) Panel1.Controls.Add(Label1) Panel1.Dock = DockStyle.Top Panel1.Location = New Point(0, 50) Panel1.Name = "Panel1" Panel1.Padding = New Padding(10, 0, 0, 0) Panel1.Size = New Size(1133, 40) Panel1.TabIndex = 2 ' ' Label8 ' Label8.Dock = DockStyle.Fill Label8.Location = New Point(900, 0) Label8.Name = "Label8" Label8.Size = New Size(233, 40) Label8.TabIndex = 7 Label8.Text = "预计剩余 && 已用" Label8.TextAlign = ContentAlignment.MiddleLeft ' ' Label7 ' Label7.Dock = DockStyle.Left Label7.Location = New Point(785, 0) Label7.Name = "Label7" Label7.Size = New Size(115, 40) Label7.TabIndex = 6 Label7.Text = "比特率" Label7.TextAlign = ContentAlignment.MiddleLeft ' ' Label6 ' Label6.Dock = DockStyle.Left Label6.Location = New Point(730, 0) Label6.Name = "Label6" Label6.Size = New Size(55, 40) Label6.TabIndex = 5 Label6.Text = "质量" Label6.TextAlign = ContentAlignment.MiddleLeft ' ' Label5 ' Label5.Dock = DockStyle.Left Label5.Location = New Point(580, 0) Label5.Name = "Label5" Label5.Size = New Size(150, 40) Label5.TabIndex = 4 Label5.Text = "输出大小 && 预估" Label5.TextAlign = ContentAlignment.MiddleLeft ' ' Label4 ' Label4.Dock = DockStyle.Left Label4.Location = New Point(500, 0) Label4.Name = "Label4" Label4.Size = New Size(80, 40) Label4.TabIndex = 3 Label4.Text = "效率" Label4.TextAlign = ContentAlignment.MiddleLeft ' ' Label3 ' Label3.Dock = DockStyle.Left Label3.Location = New Point(430, 0) Label3.Name = "Label3" Label3.Size = New Size(70, 40) Label3.TabIndex = 2 Label3.Text = "进度" Label3.TextAlign = ContentAlignment.MiddleLeft ' ' Label2 ' Label2.Dock = DockStyle.Left Label2.Location = New Point(350, 0) Label2.Name = "Label2" Label2.Size = New Size(80, 40) Label2.TabIndex = 1 Label2.Text = "状态" Label2.TextAlign = ContentAlignment.MiddleLeft ' ' Label1 ' Label1.Dock = DockStyle.Left Label1.Location = New Point(10, 0) Label1.Name = "Label1" Label1.Size = New Size(340, 40) Label1.TabIndex = 0 Label1.Text = "输入文件" Label1.TextAlign = ContentAlignment.MiddleLeft ' ' Panel41 ' Panel41.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel41.Controls.Add(Panel47) Panel41.Controls.Add(Label120) Panel41.Controls.Add(Label74) Panel41.Dock = DockStyle.Bottom Panel41.Location = New Point(0, 601) Panel41.Name = "Panel41" Panel41.Padding = New Padding(10) Panel41.Size = New Size(1133, 160) Panel41.TabIndex = 5 Panel41.Visible = False ' ' Panel47 ' Panel47.AutoScroll = True Panel47.Controls.Add(Label76) Panel47.Dock = DockStyle.Top Panel47.Location = New Point(10, 40) Panel47.Name = "Panel47" Panel47.Size = New Size(1113, 78) Panel47.TabIndex = 14 ' ' Label76 ' Label76.Dock = DockStyle.Top Label76.Font = New Font("微软雅黑", 10F) Label76.ForeColor = Color.Chocolate Label76.Location = New Point(0, 0) Label76.Name = "Label76" Label76.Size = New Size(1113, 62) Label76.TabIndex = 15 Label76.Text = "累计错误信息" ' ' Label120 ' Label120.Dock = DockStyle.Top Label120.Location = New Point(10, 30) Label120.Name = "Label120" Label120.Size = New Size(1113, 10) Label120.TabIndex = 15 ' ' Label74 ' Label74.AutoSize = True Label74.Dock = DockStyle.Top Label74.Font = New Font("微软雅黑", 10F) Label74.ForeColor = Color.CornflowerBlue Label74.Location = New Point(10, 10) Label74.Name = "Label74" Label74.Size = New Size(118, 20) Label74.TabIndex = 13 Label74.Text = "ffmpeg 实时信息" ' ' Panel2 ' Panel2.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel2.Controls.Add(UiButton15) Panel2.Controls.Add(UiButton7) Panel2.Controls.Add(UiButton重新添加) Panel2.Controls.Add(UiButton8) Panel2.Controls.Add(UiButton9) Panel2.Controls.Add(UiButton16) Panel2.Controls.Add(UiButton6) Panel2.Controls.Add(UiButton5) Panel2.Controls.Add(UiButton2) Panel2.Controls.Add(UiButton1) Panel2.Controls.Add(UiButton3) Panel2.Dock = DockStyle.Top Panel2.Location = New Point(0, 0) Panel2.Name = "Panel2" Panel2.Padding = New Padding(0, 10, 10, 0) Panel2.Size = New Size(1133, 50) Panel2.TabIndex = 3 ' ' UiButton15 ' UiButton15.Dock = DockStyle.Left UiButton15.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton15.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton15.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton15.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton15.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton15.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton15.Font = New Font("微软雅黑", 10F) UiButton15.ForeColor = Color.MediumPurple UiButton15.ForeDisableColor = Color.MediumPurple UiButton15.ForeHoverColor = Color.MediumPurple UiButton15.ForePressColor = Color.MediumPurple UiButton15.ForeSelectedColor = Color.MediumPurple UiButton15.Location = New Point(660, 10) UiButton15.MinimumSize = New Size(1, 1) UiButton15.Name = "UiButton15" UiButton15.Radius = 0 UiButton15.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton15.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton15.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton15.RectHoverColor = Color.CornflowerBlue UiButton15.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton15.RectSelectedColor = Color.CornflowerBlue UiButton15.RectSides = ToolStripStatusLabelBorderSides.None UiButton15.Size = New Size(100, 40) UiButton15.TabIndex = 92 UiButton15.Text = "复制命令行" UiButton15.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton7 ' UiButton7.Dock = DockStyle.Left UiButton7.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton7.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton7.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton7.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton7.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton7.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton7.Font = New Font("微软雅黑", 10F) UiButton7.ForeColor = Color.MediumPurple UiButton7.ForeDisableColor = Color.MediumPurple UiButton7.ForeHoverColor = Color.MediumPurple UiButton7.ForePressColor = Color.MediumPurple UiButton7.ForeSelectedColor = Color.MediumPurple UiButton7.Location = New Point(580, 10) UiButton7.MinimumSize = New Size(1, 1) UiButton7.Name = "UiButton7" UiButton7.Radius = 0 UiButton7.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton7.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton7.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton7.RectHoverColor = Color.CornflowerBlue UiButton7.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton7.RectSelectedColor = Color.CornflowerBlue UiButton7.RectSides = ToolStripStatusLabelBorderSides.None UiButton7.Size = New Size(80, 40) UiButton7.TabIndex = 90 UiButton7.Text = "导出配置" UiButton7.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton重新添加 ' UiButton重新添加.Dock = DockStyle.Left UiButton重新添加.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton重新添加.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton重新添加.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton重新添加.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton重新添加.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton重新添加.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton重新添加.Font = New Font("微软雅黑", 10F) UiButton重新添加.ForeColor = Color.CornflowerBlue UiButton重新添加.ForeDisableColor = Color.CornflowerBlue UiButton重新添加.ForeHoverColor = Color.CornflowerBlue UiButton重新添加.ForePressColor = Color.CornflowerBlue UiButton重新添加.ForeSelectedColor = Color.CornflowerBlue UiButton重新添加.Location = New Point(510, 10) UiButton重新添加.MinimumSize = New Size(1, 1) UiButton重新添加.Name = "UiButton重新添加" UiButton重新添加.Radius = 0 UiButton重新添加.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton重新添加.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton重新添加.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton重新添加.RectHoverColor = Color.CornflowerBlue UiButton重新添加.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton重新添加.RectSelectedColor = Color.CornflowerBlue UiButton重新添加.RectSides = ToolStripStatusLabelBorderSides.None UiButton重新添加.Size = New Size(70, 40) UiButton重新添加.TabIndex = 94 UiButton重新添加.Text = "重添加" UiButton重新添加.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton8 ' UiButton8.Dock = DockStyle.Left UiButton8.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton8.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton8.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton8.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton8.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton8.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton8.Font = New Font("微软雅黑", 10F) UiButton8.ForeColor = Color.CornflowerBlue UiButton8.ForeDisableColor = Color.CornflowerBlue UiButton8.ForeHoverColor = Color.CornflowerBlue UiButton8.ForePressColor = Color.CornflowerBlue UiButton8.ForeSelectedColor = Color.CornflowerBlue UiButton8.Location = New Point(440, 10) UiButton8.MinimumSize = New Size(1, 1) UiButton8.Name = "UiButton8" UiButton8.Radius = 0 UiButton8.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton8.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton8.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton8.RectHoverColor = Color.CornflowerBlue UiButton8.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton8.RectSelectedColor = Color.CornflowerBlue UiButton8.RectSides = ToolStripStatusLabelBorderSides.None UiButton8.Size = New Size(70, 40) UiButton8.TabIndex = 88 UiButton8.Text = "重配置" UiButton8.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton9 ' UiButton9.Dock = DockStyle.Left UiButton9.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton9.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton9.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton9.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton9.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton9.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton9.Font = New Font("微软雅黑", 10F) UiButton9.ForeColor = Color.MediumPurple UiButton9.ForeDisableColor = Color.MediumPurple UiButton9.ForeHoverColor = Color.MediumPurple UiButton9.ForePressColor = Color.MediumPurple UiButton9.ForeSelectedColor = Color.MediumPurple UiButton9.Location = New Point(360, 10) UiButton9.MinimumSize = New Size(1, 1) UiButton9.Name = "UiButton9" UiButton9.Radius = 0 UiButton9.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton9.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton9.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton9.RectHoverColor = Color.CornflowerBlue UiButton9.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton9.RectSelectedColor = Color.CornflowerBlue UiButton9.RectSides = ToolStripStatusLabelBorderSides.None UiButton9.Size = New Size(80, 40) UiButton9.TabIndex = 86 UiButton9.Text = "定位输出" UiButton9.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton16 ' UiButton16.Dock = DockStyle.Left UiButton16.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton16.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton16.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton16.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton16.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton16.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton16.Font = New Font("微软雅黑", 10F) UiButton16.ForeColor = Color.Goldenrod UiButton16.ForeDisableColor = Color.Goldenrod UiButton16.ForeHoverColor = Color.Goldenrod UiButton16.ForePressColor = Color.Goldenrod UiButton16.ForeSelectedColor = Color.Goldenrod UiButton16.Location = New Point(300, 10) UiButton16.MinimumSize = New Size(1, 1) UiButton16.Name = "UiButton16" UiButton16.Radius = 0 UiButton16.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton16.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton16.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton16.RectHoverColor = Color.CornflowerBlue UiButton16.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton16.RectSelectedColor = Color.CornflowerBlue UiButton16.RectSides = ToolStripStatusLabelBorderSides.None UiButton16.Size = New Size(60, 40) UiButton16.TabIndex = 78 UiButton16.Text = "重置" UiButton16.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton6 ' UiButton6.Dock = DockStyle.Left UiButton6.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton6.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton6.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton6.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton6.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton6.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton6.Font = New Font("微软雅黑", 10F) UiButton6.ForeColor = Color.IndianRed UiButton6.ForeDisableColor = Color.IndianRed UiButton6.ForeHoverColor = Color.IndianRed UiButton6.ForePressColor = Color.IndianRed UiButton6.ForeSelectedColor = Color.IndianRed UiButton6.Location = New Point(240, 10) UiButton6.MinimumSize = New Size(1, 1) UiButton6.Name = "UiButton6" UiButton6.Radius = 0 UiButton6.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton6.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton6.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton6.RectHoverColor = Color.CornflowerBlue UiButton6.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton6.RectSelectedColor = Color.CornflowerBlue UiButton6.RectSides = ToolStripStatusLabelBorderSides.None UiButton6.Size = New Size(60, 40) UiButton6.TabIndex = 54 UiButton6.Text = "移除" UiButton6.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton5 ' UiButton5.Dock = DockStyle.Left UiButton5.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton5.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton5.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton5.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton5.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton5.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton5.Font = New Font("微软雅黑", 10F) UiButton5.ForeColor = Color.IndianRed UiButton5.ForeDisableColor = Color.IndianRed UiButton5.ForeHoverColor = Color.IndianRed UiButton5.ForePressColor = Color.IndianRed UiButton5.ForeSelectedColor = Color.IndianRed UiButton5.Location = New Point(180, 10) UiButton5.MinimumSize = New Size(1, 1) UiButton5.Name = "UiButton5" UiButton5.Radius = 0 UiButton5.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton5.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton5.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton5.RectHoverColor = Color.CornflowerBlue UiButton5.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton5.RectSelectedColor = Color.CornflowerBlue UiButton5.RectSides = ToolStripStatusLabelBorderSides.None UiButton5.Size = New Size(60, 40) UiButton5.TabIndex = 52 UiButton5.Text = "停止" UiButton5.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton2 ' UiButton2.Dock = DockStyle.Left UiButton2.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton2.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton2.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton2.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton2.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton2.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton2.Font = New Font("微软雅黑", 10F) UiButton2.ForeColor = Color.YellowGreen UiButton2.ForeDisableColor = Color.YellowGreen UiButton2.ForeHoverColor = Color.YellowGreen UiButton2.ForePressColor = Color.YellowGreen UiButton2.ForeSelectedColor = Color.YellowGreen UiButton2.Location = New Point(120, 10) UiButton2.MinimumSize = New Size(1, 1) UiButton2.Name = "UiButton2" UiButton2.Radius = 0 UiButton2.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton2.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton2.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton2.RectHoverColor = Color.CornflowerBlue UiButton2.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton2.RectSelectedColor = Color.CornflowerBlue UiButton2.RectSides = ToolStripStatusLabelBorderSides.None UiButton2.Size = New Size(60, 40) UiButton2.TabIndex = 48 UiButton2.Text = "恢复" UiButton2.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton1 ' UiButton1.Dock = DockStyle.Left UiButton1.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton1.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton1.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.Font = New Font("微软雅黑", 10F) UiButton1.ForeColor = Color.Goldenrod UiButton1.ForeDisableColor = Color.Goldenrod UiButton1.ForeHoverColor = Color.Goldenrod UiButton1.ForePressColor = Color.Goldenrod UiButton1.ForeSelectedColor = Color.Goldenrod UiButton1.Location = New Point(60, 10) UiButton1.MinimumSize = New Size(1, 1) UiButton1.Name = "UiButton1" UiButton1.Radius = 0 UiButton1.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton1.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton1.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton1.RectHoverColor = Color.CornflowerBlue UiButton1.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton1.RectSelectedColor = Color.CornflowerBlue UiButton1.RectSides = ToolStripStatusLabelBorderSides.None UiButton1.Size = New Size(60, 40) UiButton1.TabIndex = 46 UiButton1.Text = "暂停" UiButton1.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton3 ' UiButton3.Dock = DockStyle.Left UiButton3.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton3.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton3.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton3.FillHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiButton3.FillPressColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton3.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton3.Font = New Font("微软雅黑", 10F) UiButton3.ForeColor = Color.YellowGreen UiButton3.ForeDisableColor = Color.YellowGreen UiButton3.ForeHoverColor = Color.YellowGreen UiButton3.ForePressColor = Color.YellowGreen UiButton3.ForeSelectedColor = Color.YellowGreen UiButton3.Location = New Point(0, 10) UiButton3.MinimumSize = New Size(1, 1) UiButton3.Name = "UiButton3" UiButton3.Radius = 0 UiButton3.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton3.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton3.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton3.RectHoverColor = Color.CornflowerBlue UiButton3.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton3.RectSelectedColor = Color.CornflowerBlue UiButton3.RectSides = ToolStripStatusLabelBorderSides.None UiButton3.Size = New Size(60, 40) UiButton3.TabIndex = 44 UiButton3.Text = "开始" UiButton3.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' TabPage添加文件 ' TabPage添加文件.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPage添加文件.Controls.Add(Panel58) TabPage添加文件.Controls.Add(Panel57) TabPage添加文件.Controls.Add(Panel3) TabPage添加文件.Font = New Font("微软雅黑", 10F) TabPage添加文件.Location = New Point(151, 0) TabPage添加文件.Name = "TabPage添加文件" TabPage添加文件.Size = New Size(1133, 761) TabPage添加文件.TabIndex = 1 TabPage添加文件.Text = "添加文件" ' ' Panel58 ' Panel58.Controls.Add(ListView2) Panel58.Dock = DockStyle.Fill Panel58.Location = New Point(0, 60) Panel58.Name = "Panel58" Panel58.Padding = New Padding(10, 10, 0, 10) Panel58.Size = New Size(1133, 646) Panel58.TabIndex = 6 ' ' ListView2 ' ListView2.AllowDrop = True ListView2.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) ListView2.BorderStyle = BorderStyle.None ListView2.Columns.AddRange(New ColumnHeader() {ColumnHeader9}) ListView2.Dock = DockStyle.Fill ListView2.ForeColor = Color.Silver ListView2.FullRowSelect = True ListView2.HeaderStyle = ColumnHeaderStyle.None ListView2.Location = New Point(10, 10) ListView2.Name = "ListView2" ListView2.OwnerDraw = True ListView2.ShowItemToolTips = True ListView2.Size = New Size(1123, 626) ListView2.StateImageList = ImageList1 ListView2.TabIndex = 0 ListView2.TabStop = False ListView2.UseCompatibleStateImageBehavior = False ListView2.View = View.Details ' ' Panel57 ' Panel57.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel57.Controls.Add(UiComboBox21) Panel57.Controls.Add(Label100) Panel57.Controls.Add(UiComboBox输出容器) Panel57.Dock = DockStyle.Bottom Panel57.Location = New Point(0, 706) Panel57.Name = "Panel57" Panel57.Padding = New Padding(10) Panel57.Size = New Size(1133, 55) Panel57.TabIndex = 5 ' ' UiComboBox21 ' UiComboBox21.DataSource = Nothing UiComboBox21.Dock = DockStyle.Fill UiComboBox21.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList UiComboBox21.FillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox21.FillColor2 = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox21.FillDisableColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox21.Font = New Font("微软雅黑", 10F) UiComboBox21.ForeColor = Color.Silver UiComboBox21.ForeDisableColor = Color.Silver UiComboBox21.ItemFillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox21.ItemForeColor = Color.Silver UiComboBox21.ItemHeight = 30 UiComboBox21.ItemHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiComboBox21.ItemRectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiComboBox21.Items.AddRange(New Object() {"输出到原目录", "浏览 ..."}) UiComboBox21.ItemSelectBackColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox21.ItemSelectForeColor = Color.Silver UiComboBox21.Location = New Point(270, 10) UiComboBox21.Margin = New Padding(4, 5, 4, 5) UiComboBox21.MaxDropDownItems = 17 UiComboBox21.MinimumSize = New Size(63, 0) UiComboBox21.Name = "UiComboBox21" UiComboBox21.Padding = New Padding(0, 0, 30, 2) UiComboBox21.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiComboBox21.RectColor = Color.CornflowerBlue UiComboBox21.RectDisableColor = Color.CornflowerBlue UiComboBox21.ScrollBarHandleWidth = 20 UiComboBox21.Size = New Size(853, 35) UiComboBox21.Style = Sunny.UI.UIStyle.Custom UiComboBox21.StyleDropDown = Sunny.UI.UIStyle.Black UiComboBox21.SymbolSize = 24 UiComboBox21.TabIndex = 75 UiComboBox21.TextAlignment = ContentAlignment.MiddleLeft UiComboBox21.Watermark = "选择输出目录" UiComboBox21.WatermarkActiveColor = Color.CornflowerBlue UiComboBox21.WatermarkColor = Color.CornflowerBlue ' ' Label100 ' Label100.Dock = DockStyle.Left Label100.Location = New Point(260, 10) Label100.Name = "Label100" Label100.Size = New Size(10, 35) Label100.TabIndex = 74 ' ' UiComboBox输出容器 ' UiComboBox输出容器.DataSource = Nothing UiComboBox输出容器.Dock = DockStyle.Left UiComboBox输出容器.FillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox输出容器.FillColor2 = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox输出容器.FillDisableColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox输出容器.Font = New Font("微软雅黑", 10F) UiComboBox输出容器.ForeColor = Color.Silver UiComboBox输出容器.ForeDisableColor = Color.Silver UiComboBox输出容器.ItemFillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox输出容器.ItemForeColor = Color.Silver UiComboBox输出容器.ItemHeight = 30 UiComboBox输出容器.ItemHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiComboBox输出容器.ItemRectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiComboBox输出容器.Items.AddRange(New Object() {".mp4", ".mkv", ".flv", ".mov", ".wmv", ".rmvb", ".mp3", ".flac", ".wav", ".png", ".jpg", ".jpeg", ".gif"}) UiComboBox输出容器.ItemSelectBackColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox输出容器.ItemSelectForeColor = Color.Silver UiComboBox输出容器.Location = New Point(10, 10) UiComboBox输出容器.Margin = New Padding(4, 5, 4, 5) UiComboBox输出容器.MaxDropDownItems = 17 UiComboBox输出容器.MinimumSize = New Size(63, 0) UiComboBox输出容器.Name = "UiComboBox输出容器" UiComboBox输出容器.Padding = New Padding(0, 0, 30, 2) UiComboBox输出容器.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiComboBox输出容器.RectColor = Color.YellowGreen UiComboBox输出容器.RectDisableColor = Color.YellowGreen UiComboBox输出容器.ScrollBarHandleWidth = 20 UiComboBox输出容器.Size = New Size(250, 35) UiComboBox输出容器.Style = Sunny.UI.UIStyle.Custom UiComboBox输出容器.StyleDropDown = Sunny.UI.UIStyle.Black UiComboBox输出容器.SymbolSize = 24 UiComboBox输出容器.TabIndex = 71 UiComboBox输出容器.TextAlignment = ContentAlignment.MiddleLeft UiComboBox输出容器.Watermark = "选择或填写输出容器(后缀)" UiComboBox输出容器.WatermarkActiveColor = Color.YellowGreen UiComboBox输出容器.WatermarkColor = Color.YellowGreen ' ' Panel3 ' Panel3.BackColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) Panel3.Controls.Add(Label102) Panel3.Controls.Add(UiButton12) Panel3.Controls.Add(Label18) Panel3.Controls.Add(UiButton11) Panel3.Controls.Add(Label17) Panel3.Controls.Add(UiButton10) Panel3.Controls.Add(Label24) Panel3.Controls.Add(UiButton18) Panel3.Controls.Add(Label19) Panel3.Controls.Add(UiButton14) Panel3.Dock = DockStyle.Top Panel3.Location = New Point(0, 0) Panel3.Name = "Panel3" Panel3.Padding = New Padding(10) Panel3.Size = New Size(1133, 60) Panel3.TabIndex = 4 ' ' Label102 ' Label102.Dock = DockStyle.Fill Label102.Font = New Font("微软雅黑", 9F) Label102.ForeColor = Color.Gray Label102.Location = New Point(700, 10) Label102.Name = "Label102" Label102.Padding = New Padding(10, 0, 0, 0) Label102.Size = New Size(423, 40) Label102.TabIndex = 75 Label102.Text = "每个文件都是独立的任务,互不影响!" & vbCrLf & "如需加字幕等其他高级操作需用自定义参数实现" Label102.TextAlign = ContentAlignment.MiddleLeft ' ' UiButton12 ' UiButton12.Dock = DockStyle.Left UiButton12.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton12.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton12.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton12.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton12.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton12.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton12.Font = New Font("微软雅黑", 10F) UiButton12.ForeColor = Color.IndianRed UiButton12.ForeDisableColor = Color.IndianRed UiButton12.ForeHoverColor = Color.IndianRed UiButton12.ForePressColor = Color.IndianRed UiButton12.ForeSelectedColor = Color.IndianRed UiButton12.Location = New Point(600, 10) UiButton12.MinimumSize = New Size(1, 1) UiButton12.Name = "UiButton12" UiButton12.Radius = 0 UiButton12.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton12.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton12.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton12.RectHoverColor = Color.CornflowerBlue UiButton12.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton12.RectSelectedColor = Color.CornflowerBlue UiButton12.RectSize = 2 UiButton12.Size = New Size(100, 40) UiButton12.TabIndex = 50 UiButton12.Text = "全部移除" UiButton12.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label18 ' Label18.Dock = DockStyle.Left Label18.Location = New Point(590, 10) Label18.Name = "Label18" Label18.Size = New Size(10, 40) Label18.TabIndex = 49 ' ' UiButton11 ' UiButton11.Dock = DockStyle.Left UiButton11.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton11.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton11.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton11.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton11.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton11.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton11.Font = New Font("微软雅黑", 10F) UiButton11.ForeColor = Color.IndianRed UiButton11.ForeDisableColor = Color.IndianRed UiButton11.ForeHoverColor = Color.IndianRed UiButton11.ForePressColor = Color.IndianRed UiButton11.ForeSelectedColor = Color.IndianRed UiButton11.Location = New Point(490, 10) UiButton11.MinimumSize = New Size(1, 1) UiButton11.Name = "UiButton11" UiButton11.Radius = 0 UiButton11.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton11.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton11.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton11.RectHoverColor = Color.CornflowerBlue UiButton11.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton11.RectSelectedColor = Color.CornflowerBlue UiButton11.RectSize = 2 UiButton11.Size = New Size(100, 40) UiButton11.TabIndex = 48 UiButton11.Text = "移除" UiButton11.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label17 ' Label17.Dock = DockStyle.Left Label17.Location = New Point(480, 10) Label17.Name = "Label17" Label17.Size = New Size(10, 40) Label17.TabIndex = 47 ' ' UiButton10 ' UiButton10.Dock = DockStyle.Left UiButton10.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton10.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton10.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton10.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton10.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton10.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton10.Font = New Font("微软雅黑", 10F) UiButton10.ForeColor = Color.MediumPurple UiButton10.ForeDisableColor = Color.MediumPurple UiButton10.ForeHoverColor = Color.MediumPurple UiButton10.ForePressColor = Color.MediumPurple UiButton10.ForeSelectedColor = Color.MediumPurple UiButton10.Location = New Point(280, 10) UiButton10.MinimumSize = New Size(1, 1) UiButton10.Name = "UiButton10" UiButton10.Radius = 0 UiButton10.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton10.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton10.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton10.RectHoverColor = Color.CornflowerBlue UiButton10.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton10.RectSelectedColor = Color.CornflowerBlue UiButton10.RectSize = 2 UiButton10.Size = New Size(200, 40) UiButton10.TabIndex = 46 UiButton10.Text = "添加文件夹及其子目录" UiButton10.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label24 ' Label24.Dock = DockStyle.Left Label24.Location = New Point(270, 10) Label24.Name = "Label24" Label24.Size = New Size(10, 40) Label24.TabIndex = 45 ' ' UiButton18 ' UiButton18.Dock = DockStyle.Left UiButton18.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton18.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton18.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton18.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton18.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton18.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton18.Font = New Font("微软雅黑", 10F) UiButton18.ForeColor = Color.MediumPurple UiButton18.ForeDisableColor = Color.MediumPurple UiButton18.ForeHoverColor = Color.MediumPurple UiButton18.ForePressColor = Color.MediumPurple UiButton18.ForeSelectedColor = Color.MediumPurple UiButton18.Location = New Point(170, 10) UiButton18.MinimumSize = New Size(1, 1) UiButton18.Name = "UiButton18" UiButton18.Radius = 0 UiButton18.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton18.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton18.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton18.RectHoverColor = Color.CornflowerBlue UiButton18.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton18.RectSelectedColor = Color.CornflowerBlue UiButton18.RectSize = 2 UiButton18.Size = New Size(100, 40) UiButton18.TabIndex = 44 UiButton18.Text = "添加文件" UiButton18.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label19 ' Label19.Dock = DockStyle.Left Label19.Location = New Point(160, 10) Label19.Name = "Label19" Label19.Size = New Size(10, 40) Label19.TabIndex = 72 ' ' UiButton14 ' UiButton14.Dock = DockStyle.Left UiButton14.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton14.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton14.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton14.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton14.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton14.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton14.Font = New Font("微软雅黑", 10F) UiButton14.ForeColor = Color.YellowGreen UiButton14.ForeDisableColor = Color.YellowGreen UiButton14.ForeHoverColor = Color.YellowGreen UiButton14.ForePressColor = Color.YellowGreen UiButton14.ForeSelectedColor = Color.YellowGreen UiButton14.Location = New Point(10, 10) UiButton14.MinimumSize = New Size(1, 1) UiButton14.Name = "UiButton14" UiButton14.Radius = 0 UiButton14.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton14.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton14.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton14.RectHoverColor = Color.CornflowerBlue UiButton14.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton14.RectSelectedColor = Color.CornflowerBlue UiButton14.RectSize = 2 UiButton14.Size = New Size(150, 40) UiButton14.TabIndex = 71 UiButton14.Text = "加入编码队列" UiButton14.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' TabPage转码压制 ' TabPage转码压制.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPage转码压制.Controls.Add(Panel6) TabPage转码压制.Location = New Point(151, 0) TabPage转码压制.Name = "TabPage转码压制" TabPage转码压制.Size = New Size(1133, 761) TabPage转码压制.TabIndex = 14 TabPage转码压制.Text = "参数面板" ' ' Panel6 ' Panel6.Dock = DockStyle.Fill Panel6.Font = New Font("微软雅黑", 10F) Panel6.Location = New Point(0, 0) Panel6.Name = "Panel6" Panel6.Size = New Size(1133, 761) Panel6.TabIndex = 0 ' ' TabPage媒体信息 ' TabPage媒体信息.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPage媒体信息.Controls.Add(Panel4) TabPage媒体信息.Location = New Point(151, 0) TabPage媒体信息.Name = "TabPage媒体信息" TabPage媒体信息.Size = New Size(1133, 761) TabPage媒体信息.TabIndex = 17 TabPage媒体信息.Text = "媒体信息" ' ' Panel4 ' Panel4.Controls.Add(Panel76) Panel4.Controls.Add(Label23) Panel4.Controls.Add(Panel9) Panel4.Dock = DockStyle.Fill Panel4.Font = New Font("微软雅黑", 10F) Panel4.Location = New Point(0, 0) Panel4.Name = "Panel4" Panel4.Padding = New Padding(20) Panel4.Size = New Size(1133, 761) Panel4.TabIndex = 0 ' ' Panel76 ' Panel76.AutoSize = True Panel76.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel76.Controls.Add(Panel77) Panel76.Dock = DockStyle.Fill Panel76.Location = New Point(20, 152) Panel76.Name = "Panel76" Panel76.Padding = New Padding(10) Panel76.Size = New Size(1093, 589) Panel76.TabIndex = 84 ' ' Panel77 ' Panel77.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) Panel77.Controls.Add(RichTextBox1) Panel77.Dock = DockStyle.Fill Panel77.Location = New Point(10, 10) Panel77.Name = "Panel77" Panel77.Padding = New Padding(0, 10, 0, 10) Panel77.Size = New Size(1073, 569) Panel77.TabIndex = 13 ' ' RichTextBox1 ' RichTextBox1.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) RichTextBox1.BorderStyle = BorderStyle.None RichTextBox1.Dock = DockStyle.Fill RichTextBox1.Font = New Font("微软雅黑", 12F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) RichTextBox1.ForeColor = Color.Silver RichTextBox1.Location = New Point(0, 10) RichTextBox1.Name = "RichTextBox1" RichTextBox1.ReadOnly = True RichTextBox1.ScrollBars = RichTextBoxScrollBars.Vertical RichTextBox1.ShowSelectionMargin = True RichTextBox1.Size = New Size(1073, 549) RichTextBox1.TabIndex = 11 RichTextBox1.Text = "" ' ' Label23 ' Label23.Dock = DockStyle.Top Label23.Location = New Point(20, 132) Label23.Name = "Label23" Label23.Size = New Size(1093, 20) Label23.TabIndex = 83 ' ' Panel9 ' Panel9.AutoSize = True Panel9.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel9.Controls.Add(Panel75) Panel9.Controls.Add(Label123) Panel9.Controls.Add(Label22) Panel9.Dock = DockStyle.Top Panel9.Location = New Point(20, 20) Panel9.Name = "Panel9" Panel9.Padding = New Padding(10) Panel9.Size = New Size(1093, 112) Panel9.TabIndex = 80 ' ' Panel75 ' Panel75.Controls.Add(UiButton打开文件显示参数) Panel75.Dock = DockStyle.Top Panel75.Location = New Point(10, 67) Panel75.Name = "Panel75" Panel75.Padding = New Padding(3, 0, 0, 0) Panel75.Size = New Size(1073, 35) Panel75.TabIndex = 11 ' ' UiButton打开文件显示参数 ' UiButton打开文件显示参数.AllowDrop = True UiButton打开文件显示参数.Dock = DockStyle.Left UiButton打开文件显示参数.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton打开文件显示参数.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton打开文件显示参数.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton打开文件显示参数.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton打开文件显示参数.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton打开文件显示参数.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton打开文件显示参数.Font = New Font("微软雅黑", 10F) UiButton打开文件显示参数.ForeColor = Color.YellowGreen UiButton打开文件显示参数.ForeDisableColor = Color.YellowGreen UiButton打开文件显示参数.ForeHoverColor = Color.YellowGreen UiButton打开文件显示参数.ForePressColor = Color.YellowGreen UiButton打开文件显示参数.ForeSelectedColor = Color.YellowGreen UiButton打开文件显示参数.Location = New Point(3, 0) UiButton打开文件显示参数.MinimumSize = New Size(1, 1) UiButton打开文件显示参数.Name = "UiButton打开文件显示参数" UiButton打开文件显示参数.Radius = 0 UiButton打开文件显示参数.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton打开文件显示参数.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton打开文件显示参数.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton打开文件显示参数.RectHoverColor = Color.CornflowerBlue UiButton打开文件显示参数.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton打开文件显示参数.RectSelectedColor = Color.CornflowerBlue UiButton打开文件显示参数.RectSize = 2 UiButton打开文件显示参数.Size = New Size(100, 35) UiButton打开文件显示参数.TabIndex = 44 UiButton打开文件显示参数.Text = "打开" UiButton打开文件显示参数.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label123 ' Label123.AutoSize = True Label123.Dock = DockStyle.Top Label123.Font = New Font("微软雅黑", 9F) Label123.ForeColor = Color.Gray Label123.Location = New Point(10, 40) Label123.Name = "Label123" Label123.Padding = New Padding(0, 0, 0, 10) Label123.Size = New Size(443, 27) Label123.TabIndex = 4 Label123.Text = "此功能依赖 ffprobe.exe 且直接展示其输出信息,可以直接把文件拖到打开按钮上" ' ' Label22 ' Label22.AutoSize = True Label22.Dock = DockStyle.Top Label22.Font = New Font("微软雅黑", 10F) Label22.Location = New Point(10, 10) Label22.Name = "Label22" Label22.Padding = New Padding(0, 0, 0, 10) Label22.Size = New Size(149, 30) Label22.TabIndex = 0 Label22.Text = "快捷查看媒体参数信息" ' ' TabPageEX混流 ' TabPageEX混流.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPageEX混流.Location = New Point(151, 0) TabPageEX混流.Name = "TabPageEX混流" TabPageEX混流.Size = New Size(1133, 761) TabPageEX混流.TabIndex = 18 TabPageEX混流.Text = "EX:混流" ' ' TabPageEX合并 ' TabPageEX合并.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPageEX合并.Location = New Point(151, 0) TabPageEX合并.Name = "TabPageEX合并" TabPageEX合并.Size = New Size(1133, 761) TabPageEX合并.TabIndex = 19 TabPageEX合并.Text = "EX:合并" ' ' TabPageEX截取 ' TabPageEX截取.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) TabPageEX截取.Location = New Point(151, 0) TabPageEX截取.Name = "TabPageEX截取" TabPageEX截取.Size = New Size(1133, 761) TabPageEX截取.TabIndex = 20 TabPageEX截取.Text = "EX:截取" ' ' Timer1 ' Timer1.Interval = 1000 ' ' Form1 ' AutoScaleDimensions = New SizeF(96F, 96F) AutoScaleMode = AutoScaleMode.Dpi BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) ClientSize = New Size(1284, 761) Controls.Add(UiTabControlMenu1) DoubleBuffered = True Font = New Font("微软雅黑", 10F) ForeColor = Color.Silver MinimumSize = New Size(1300, 800) Name = "Form1" StartPosition = FormStartPosition.CenterScreen Text = "FFmpegFreeUI" UiTabControlMenu1.ResumeLayout(False) TabPage起始页面.ResumeLayout(False) Panel44.ResumeLayout(False) Panel44.PerformLayout() Panel10.ResumeLayout(False) Panel10.PerformLayout() Panel11.ResumeLayout(False) Panel15.ResumeLayout(False) Panel15.PerformLayout() Panel16.ResumeLayout(False) Panel7.ResumeLayout(False) Panel8.ResumeLayout(False) Panel8.PerformLayout() Panel12.ResumeLayout(False) Panel12.PerformLayout() Panel13.ResumeLayout(False) Panel5.ResumeLayout(False) Panel5.PerformLayout() Panel73.ResumeLayout(False) Panel73.PerformLayout() TabPage编码队列.ResumeLayout(False) Panel56.ResumeLayout(False) Panel1.ResumeLayout(False) Panel41.ResumeLayout(False) Panel41.PerformLayout() Panel47.ResumeLayout(False) Panel2.ResumeLayout(False) TabPage添加文件.ResumeLayout(False) Panel58.ResumeLayout(False) Panel57.ResumeLayout(False) Panel3.ResumeLayout(False) TabPage转码压制.ResumeLayout(False) TabPage媒体信息.ResumeLayout(False) Panel4.ResumeLayout(False) Panel4.PerformLayout() Panel76.ResumeLayout(False) Panel77.ResumeLayout(False) Panel9.ResumeLayout(False) Panel9.PerformLayout() Panel75.ResumeLayout(False) ResumeLayout(False) End Sub Friend WithEvents UiTabControlMenu1 As Sunny.UI.UITabControlMenu Friend WithEvents TabPage编码队列 As TabPage Friend WithEvents TabPage添加文件 As TabPage Friend WithEvents Panel1 As Panel Friend WithEvents Label8 As Label Friend WithEvents Label7 As Label Friend WithEvents Label6 As Label Friend WithEvents Label5 As Label Friend WithEvents Label4 As Label Friend WithEvents Label3 As Label Friend WithEvents Label2 As Label Friend WithEvents Label1 As Label Friend WithEvents Panel2 As Panel Friend WithEvents UiButton3 As Sunny.UI.UIButton Friend WithEvents UiButton6 As Sunny.UI.UIButton Friend WithEvents UiButton5 As Sunny.UI.UIButton Friend WithEvents UiButton2 As Sunny.UI.UIButton Friend WithEvents UiButton1 As Sunny.UI.UIButton Friend WithEvents Panel3 As Panel Friend WithEvents UiButton12 As Sunny.UI.UIButton Friend WithEvents Label18 As Label Friend WithEvents UiButton11 As Sunny.UI.UIButton Friend WithEvents Label17 As Label Friend WithEvents UiButton10 As Sunny.UI.UIButton Friend WithEvents Label24 As Label Friend WithEvents UiButton18 As Sunny.UI.UIButton Friend WithEvents Panel56 As Panel Friend WithEvents ListView1 As ListView Friend WithEvents ColumnHeader1 As ColumnHeader Friend WithEvents ColumnHeader2 As ColumnHeader Friend WithEvents ColumnHeader3 As ColumnHeader Friend WithEvents ColumnHeader4 As ColumnHeader Friend WithEvents ColumnHeader5 As ColumnHeader Friend WithEvents ColumnHeader6 As ColumnHeader Friend WithEvents ColumnHeader7 As ColumnHeader Friend WithEvents ColumnHeader8 As ColumnHeader Friend WithEvents ImageList1 As ImageList Friend WithEvents Panel58 As Panel Friend WithEvents ListView2 As ListView Friend WithEvents ColumnHeader9 As ColumnHeader Friend WithEvents Panel57 As Panel Friend WithEvents Label100 As Label Friend WithEvents UiComboBox输出容器 As Sunny.UI.UIComboBox Friend WithEvents Label19 As Label Friend WithEvents UiButton14 As Sunny.UI.UIButton Friend WithEvents UiComboBox21 As Sunny.UI.UIComboBox Friend WithEvents Timer1 As Timer Friend WithEvents UiButton16 As Sunny.UI.UIButton Friend WithEvents TabPage起始页面 As TabPage Friend WithEvents Panel44 As Panel Friend WithEvents Label102 As Label Friend WithEvents Panel41 As Panel Friend WithEvents Label74 As Label Friend WithEvents Panel47 As Panel Friend WithEvents Label76 As Label Friend WithEvents Label120 As Label Friend WithEvents TabPage转码压制 As TabPage Friend WithEvents Panel6 As Panel Friend WithEvents TabPage媒体信息 As TabPage Friend WithEvents Panel4 As Panel Friend WithEvents Panel73 As Panel Friend WithEvents Label128 As Label Friend WithEvents Label126 As Label Friend WithEvents Label125 As Label Friend WithEvents Label124 As Label Friend WithEvents Panel7 As Panel Friend WithEvents Panel5 As Panel Friend WithEvents LinkLabel6 As LinkLabel Friend WithEvents LinkLabel5 As LinkLabel Friend WithEvents LinkLabel4 As LinkLabel Friend WithEvents LinkLabel3 As LinkLabel Friend WithEvents LinkLabel2 As LinkLabel Friend WithEvents LinkLabel7 As LinkLabel Friend WithEvents Label127 As Label Friend WithEvents Label20 As Label Friend WithEvents Panel8 As Panel Friend WithEvents Label122 As Label Friend WithEvents Label75 As Label Friend WithEvents Label73 As Label Friend WithEvents Label65 As Label Friend WithEvents Label64 As Label Friend WithEvents Label129 As Label Friend WithEvents Label21 As Label Friend WithEvents Panel9 As Panel Friend WithEvents Label123 As Label Friend WithEvents Label22 As Label Friend WithEvents Panel75 As Panel Friend WithEvents UiButton打开文件显示参数 As Sunny.UI.UIButton Friend WithEvents Label23 As Label Friend WithEvents Panel76 As Panel Friend WithEvents Panel77 As Panel Friend WithEvents RichTextBox1 As RichTextBox Friend WithEvents UiButton15 As Sunny.UI.UIButton Friend WithEvents UiButton7 As Sunny.UI.UIButton Friend WithEvents UiButton重新添加 As Sunny.UI.UIButton Friend WithEvents UiButton8 As Sunny.UI.UIButton Friend WithEvents UiButton9 As Sunny.UI.UIButton Friend WithEvents Panel10 As Panel Friend WithEvents Label28 As Label Friend WithEvents Label29 As Label Friend WithEvents Label30 As Label Friend WithEvents Panel11 As Panel Friend WithEvents UiTextBox处理器核心 As Sunny.UI.UITextBox Friend WithEvents UiTextBox快捷输入CPU核心 As Sunny.UI.UITextBox Friend WithEvents Label106 As Label Friend WithEvents TabPageEX混流 As TabPage Friend WithEvents TabPageEX合并 As TabPage Friend WithEvents TabPageEX截取 As TabPage Friend WithEvents Label15 As Label Friend WithEvents Panel12 As Panel Friend WithEvents Label14 As Label Friend WithEvents Label9 As Label Friend WithEvents Panel13 As Panel Friend WithEvents UiComboBox1 As Sunny.UI.UIComboBox Friend WithEvents Label137 As Label Friend WithEvents UiButton4 As Sunny.UI.UIButton Friend WithEvents Label11 As Label Friend WithEvents Panel14 As Panel Friend WithEvents Panel15 As Panel Friend WithEvents Panel16 As Panel Friend WithEvents UiComboBox2 As Sunny.UI.UIComboBox Friend WithEvents Label12 As Label Friend WithEvents Label10 As Label End Class ``` ## /FFmpegFreeUI/Form1.resx ```resx path="/FFmpegFreeUI/Form1.resx" <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <metadata name="ImageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>17, 17</value> </metadata> <metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <value>135, 17</value> </metadata> </root> ``` ## /FFmpegFreeUI/Form1.vb ```vb path="/FFmpegFreeUI/Form1.vb" Imports System.ComponentModel Imports System.IO Public Class Form1 <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> Public Shared Property DPI As Single = Form1.CreateGraphics.DpiX / 96 Public 是否初始化 As Boolean = False Private 上一次窗口状态 As FormWindowState Public 系统状态设定 As Integer = 0 Public 常规流程参数页面 As New 界面_常规流程参数 Public 编码队列右键菜单 As 暗黑上下文菜单 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 界面控制.初始化() 视频编码器数据库.初始化() 上一次窗口状态 = Me.WindowState End Sub Private Async Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown 界面控制.界面校准() 重新创建句柄() If DPI <> 1 Then DPI变动时校准界面() Label64.Text = "正在检查更新版本 ..." Label65.Text = "" Label73.Text = "" Label75.Text = "" Label122.Text = "" '检测是否有网络 If My.Computer.Network.IsAvailable Then Dim a As New GitHubAPI.Release Dim s1 As String = Await a.获取仓库发布版信息Async("Lake1059/FFmpegFreeUI", "") If s1 <> "" Then Label64.Text = "获取更新信息失败" Label65.Text = "" Label73.Text = "" Label75.Text = "" Label122.Text = "" Else Label64.Text = "发布标题:" & a.发布标题 Label65.Text = "最新标签:" & a.版本标签 Label73.Text = "发布用户:" & a.发布者用户名 Label75.Text = "文件数量:" & a.可供下载的文件.Count Label122.Text = "发布时间:" & a.发布时间 End If Else Label64.Text = "无网络连接!联网后重启应用程序以重试" Label65.Text = "" Label73.Text = "" Label75.Text = "" Label122.Text = "" End If End Sub Private Sub Form1_DpiChanged(sender As Object, e As DpiChangedEventArgs) Handles Me.DpiChanged DPI = e.DeviceDpiNew / 96 DPI变动时校准界面() End Sub Public Sub 重新创建句柄() Try If Not Me.IsHandleCreated Then Me.CreateHandle() Catch ex As Exception End Try End Sub Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles Me.Resize If 是否初始化 = False Then Exit Sub If Me.WindowState = FormWindowState.Minimized Then Exit Sub If Me.WindowState <> 上一次窗口状态 Then 界面控制.界面校准() 上一次窗口状态 = Me.WindowState Else 界面控制.界面校准() End If End Sub Private Sub Form1_Move(sender As Object, e As EventArgs) Handles Me.Move If 是否初始化 = False Then Exit Sub 界面控制.界面校准() End Sub Sub DPI变动时校准界面() Me.MinimumSize = New Size(0, 0) Me.ClientSize = New Size(1300 * DPI, 800 * DPI) Me.MinimumSize = Me.Size Me.UiTabControlMenu1.ItemSize = New Size(150 * DPI, 40 * DPI) Me.ImageList1.ImageSize = New Size(1, 30 * DPI) 常规流程参数页面.UiTabControl1.ItemSize = New Size(120 * Form1.DPI, 50 * Form1.DPI) End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing If 编码任务.队列.Any(Function(task) task.状态 = 编码任务.编码状态.正在处理) Then Dim result = MsgBox("有任务正在处理,是否强制关闭所有进程?", MsgBoxStyle.Exclamation + MsgBoxStyle.YesNo) If result = MsgBoxResult.No Then e.Cancel = True Exit Sub End If End If For Each task In 编码任务.队列 task.清除占用() Next 恢复系统状态() If My.Computer.FileSystem.FileExists(Path.Combine(Application.StartupPath, "FontName.txt")) Then My.Computer.FileSystem.WriteAllText(Path.Combine(Application.StartupPath, "FontName.txt"), Label11.Font.Name, False) End If End Sub Private Sub ListView1_KeyDown(sender As Object, e As KeyEventArgs) Handles ListView1.KeyDown Select Case e.KeyCode Case Keys.A : If e.Control Then 界面控制_编码队列.全选任务() Case Keys.Delete : 界面控制_编码队列.移除任务() End Select End Sub Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged If Me.ListView1.SelectedItems.Count = 1 Then Timer1.Enabled = True Panel41.Visible = True 刷新调试信息() Else Timer1.Enabled = False Panel41.Visible = False End If End Sub Sub 刷新调试信息() Try Label74.Text = 编码任务.队列(Me.ListView1.SelectedItems(0).Index).实时输出 Label76.Text = String.Join(vbCrLf, 编码任务.队列(Me.ListView1.SelectedItems(0).Index).错误列表) If Label76.Text = "" Then Panel47.Visible = False Label120.Visible = False Else Panel47.Visible = True Label120.Visible = True Dim s1 = 根据标签宽度计算显示高度(Label76) Label76.Height = s1 If s1 > TabPage编码队列.Width * 0.3 Then Panel47.Height = TabPage编码队列.Width * 0.3 Else Panel47.Height = s1 End If End If Catch ex As Exception 编码任务.队列(Me.ListView1.SelectedItems(0).Index).错误列表.Add({{contextString}}quot;刷新界面失败 {Now}") End Try End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 刷新调试信息() End Sub Private Sub UiButton打开文件显示参数_Click(sender As Object, e As EventArgs) Handles UiButton打开文件显示参数.Click Dim openFileDialog As New OpenFileDialog With {.Multiselect = False, .Filter = "所有文件|*.*"} If openFileDialog.ShowDialog() = DialogResult.OK Then 显示媒体信息流程(openFileDialog.FileName) End If End Sub Sub 显示媒体信息流程(文件路径 As String) Me.RichTextBox1.Text = "" Dim FFprobeProcess As New Process FFprobeProcess = New Process() FFprobeProcess.StartInfo.FileName = "ffprobe" FFprobeProcess.StartInfo.WorkingDirectory = Application.StartupPath FFprobeProcess.StartInfo.Arguments = {{contextString}}quot;-hide_banner ""{文件路径}""" FFprobeProcess.StartInfo.RedirectStandardOutput = True FFprobeProcess.StartInfo.RedirectStandardError = True FFprobeProcess.StartInfo.StandardOutputEncoding = System.Text.Encoding.UTF8 FFprobeProcess.StartInfo.StandardErrorEncoding = System.Text.Encoding.UTF8 FFprobeProcess.StartInfo.CreateNoWindow = True FFprobeProcess.EnableRaisingEvents = True AddHandler FFprobeProcess.OutputDataReceived, AddressOf 显示媒体信息输出事件 AddHandler FFprobeProcess.ErrorDataReceived, AddressOf 显示媒体信息输出事件 FFprobeProcess.Start() FFprobeProcess.BeginOutputReadLine() FFprobeProcess.BeginErrorReadLine() End Sub Sub 显示媒体信息输出事件(sender As Object, e As DataReceivedEventArgs) If e.Data Is Nothing Then Exit Sub Try Me.重新创建句柄() Me.Invoke(Sub() Me.RichTextBox1.AppendText(e.Data & vbCrLf)) Catch ex As Exception End Try End Sub Private Sub UiButton打开文件显示参数_DragDrop(sender As Object, e As DragEventArgs) Handles UiButton打开文件显示参数.DragDrop Dim files() As String = e.Data.GetData(DataFormats.FileDrop) If files.Length > 0 Then 显示媒体信息流程(files(0)) End If End Sub Private Sub UiButton打开文件显示参数_DragEnter(sender As Object, e As DragEventArgs) Handles UiButton打开文件显示参数.DragEnter If e.Data.GetData(DataFormats.FileDrop) IsNot Nothing Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If End Sub Private Sub UiTextBox快捷输入CPU核心_KeyPress(sender As Object, e As KeyPressEventArgs) Handles UiTextBox快捷输入CPU核心.KeyPress Select Case e.KeyChar Case "0"c To "9"c, "~"c, ChrW(Keys.Back) Case ChrW(Keys.Enter) Dim input = UiTextBox快捷输入CPU核心.Text.Trim Dim result As New List(Of Integer) Try If input.Contains("~"c) Then Dim parts = input.Split("~"c) If parts.Length = 2 Then Dim startNum, endNum As Integer If Integer.TryParse(parts(0), startNum) AndAlso Integer.TryParse(parts(1), endNum) Then If startNum <= endNum Then For i = startNum To endNum result.Add(i) Next UiTextBox处理器核心.Text = String.Join(",", result) End If End If End If End If Catch ex As Exception MsgBox("输入处理异常: " & ex.Message, MsgBoxStyle.Critical) End Try e.Handled = True Case Else Exit Sub End Select End Sub Private Sub Label9_Click(sender As Object, e As EventArgs) Handles Label9.Click End Sub End Class ``` ## /FFmpegFreeUI/FormçÂȎ¢è£Âåª交äºÂçªÂå£.Designer.vb ```vb path="/FFmpegFreeUI/FormçÂȎ¢è£Âåª交äºÂçªÂå£.Designer.vb" <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class Form画面裁剪交互窗口 Inherits System.Windows.Forms.Form 'Form 重写 Dispose,以清理组件列表。 <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Windows 窗体设计器所必需的 Private components As System.ComponentModel.IContainer '注意: 以下过程是 Windows 窗体设计器所必需的 '可以使用 Windows 窗体设计器修改它。 '不要使用代码编辑器修改它。 <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Panel73 = New Panel() Panel75 = New Panel() UiCheckBox居中 = New Sunny.UI.UICheckBox() Label3 = New Label() UiComboBox比例 = New Sunny.UI.UIComboBox() Label2 = New Label() UiTextBox1 = New Sunny.UI.UITextBox() Label1 = New Label() UiTextBox画面裁剪滤镜参数 = New Sunny.UI.UITextBox() Label125 = New Label() UiButton2 = New Sunny.UI.UIButton() Label127 = New Label() UiButton1 = New Sunny.UI.UIButton() Panel3 = New Panel() Label123 = New Label() Label122 = New Label() PictureBox2 = New PictureBox() Label4 = New Label() PictureBox3 = New PictureBox() Label128 = New Label() Panel1 = New Panel() Panel2 = New Panel() PictureBox1 = New PictureBox() Panel73.SuspendLayout() Panel75.SuspendLayout() Panel3.SuspendLayout() CType(PictureBox2, ComponentModel.ISupportInitialize).BeginInit() CType(PictureBox3, ComponentModel.ISupportInitialize).BeginInit() Panel1.SuspendLayout() Panel2.SuspendLayout() CType(PictureBox1, ComponentModel.ISupportInitialize).BeginInit() SuspendLayout() ' ' Panel73 ' Panel73.AutoSize = True Panel73.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel73.Controls.Add(Panel75) Panel73.Controls.Add(Panel3) Panel73.Dock = DockStyle.Top Panel73.Location = New Point(20, 20) Panel73.Name = "Panel73" Panel73.Padding = New Padding(10) Panel73.Size = New Size(944, 176) Panel73.TabIndex = 80 ' ' Panel75 ' Panel75.Controls.Add(UiCheckBox居中) Panel75.Controls.Add(Label3) Panel75.Controls.Add(UiComboBox比例) Panel75.Controls.Add(Label2) Panel75.Controls.Add(UiTextBox1) Panel75.Controls.Add(Label1) Panel75.Controls.Add(UiTextBox画面裁剪滤镜参数) Panel75.Controls.Add(Label125) Panel75.Controls.Add(UiButton2) Panel75.Controls.Add(Label127) Panel75.Controls.Add(UiButton1) Panel75.Dock = DockStyle.Top Panel75.Location = New Point(10, 131) Panel75.Name = "Panel75" Panel75.Padding = New Padding(3, 0, 0, 0) Panel75.Size = New Size(924, 35) Panel75.TabIndex = 11 ' ' UiCheckBox居中 ' UiCheckBox居中.CheckBoxColor = Color.Silver UiCheckBox居中.CheckBoxSize = 20 UiCheckBox居中.Dock = DockStyle.Left UiCheckBox居中.Font = New Font("微软雅黑", 10F) UiCheckBox居中.ForeColor = Color.Silver UiCheckBox居中.Location = New Point(653, 0) UiCheckBox居中.MinimumSize = New Size(1, 1) UiCheckBox居中.Name = "UiCheckBox居中" UiCheckBox居中.Size = New Size(100, 35) UiCheckBox居中.TabIndex = 99 UiCheckBox居中.Text = "居中" ' ' Label3 ' Label3.Dock = DockStyle.Left Label3.Location = New Point(643, 0) Label3.Name = "Label3" Label3.Size = New Size(10, 35) Label3.TabIndex = 84 ' ' UiComboBox比例 ' UiComboBox比例.DataSource = Nothing UiComboBox比例.Dock = DockStyle.Left UiComboBox比例.DropDownAutoWidth = True UiComboBox比例.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList UiComboBox比例.FillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox比例.FillColor2 = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox比例.FillDisableColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox比例.Font = New Font("微软雅黑", 10F) UiComboBox比例.ForeColor = Color.Silver UiComboBox比例.ForeDisableColor = Color.Silver UiComboBox比例.ItemFillColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiComboBox比例.ItemForeColor = Color.Silver UiComboBox比例.ItemHeight = 30 UiComboBox比例.ItemHoverColor = Color.FromArgb(CByte(56), CByte(56), CByte(56)) UiComboBox比例.ItemRectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiComboBox比例.Items.AddRange(New Object() {"自由", "21:9", "16:9", "3:2", "2:1", "4:3", "1:1"}) UiComboBox比例.ItemSelectBackColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox比例.ItemSelectForeColor = Color.Silver UiComboBox比例.Location = New Point(543, 0) UiComboBox比例.Margin = New Padding(4, 5, 4, 5) UiComboBox比例.MaxDropDownItems = 20 UiComboBox比例.MinimumSize = New Size(63, 0) UiComboBox比例.Name = "UiComboBox比例" UiComboBox比例.Padding = New Padding(0, 0, 30, 2) UiComboBox比例.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiComboBox比例.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox比例.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiComboBox比例.ScrollBarHandleWidth = 20 UiComboBox比例.Size = New Size(100, 35) UiComboBox比例.Style = Sunny.UI.UIStyle.Custom UiComboBox比例.StyleDropDown = Sunny.UI.UIStyle.Black UiComboBox比例.SymbolSize = 24 UiComboBox比例.TabIndex = 83 UiComboBox比例.TextAlignment = ContentAlignment.MiddleLeft UiComboBox比例.Watermark = "比例" ' ' Label2 ' Label2.Dock = DockStyle.Left Label2.Location = New Point(533, 0) Label2.Name = "Label2" Label2.Size = New Size(10, 35) Label2.TabIndex = 82 ' ' UiTextBox1 ' UiTextBox1.Dock = DockStyle.Left UiTextBox1.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.Font = New Font("微软雅黑", 11F, FontStyle.Bold) UiTextBox1.ForeColor = Color.DarkGray UiTextBox1.ForeDisableColor = Color.DarkGray UiTextBox1.ForeReadOnlyColor = Color.DarkGray UiTextBox1.Location = New Point(383, 0) UiTextBox1.Margin = New Padding(4, 5, 4, 5) UiTextBox1.MinimumSize = New Size(1, 16) UiTextBox1.Name = "UiTextBox1" UiTextBox1.Padding = New Padding(5) UiTextBox1.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiTextBox1.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox1.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox1.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox1.RectSize = 2 UiTextBox1.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox1.ScrollBarColor = Color.DimGray UiTextBox1.ScrollBarStyleInherited = False UiTextBox1.ShowText = False UiTextBox1.Size = New Size(150, 35) UiTextBox1.TabIndex = 81 UiTextBox1.TextAlignment = ContentAlignment.MiddleLeft UiTextBox1.Watermark = "指定帧时间戳" UiTextBox1.WatermarkActiveColor = Color.DimGray UiTextBox1.WatermarkColor = Color.DimGray ' ' Label1 ' Label1.Dock = DockStyle.Left Label1.Location = New Point(373, 0) Label1.Name = "Label1" Label1.Size = New Size(10, 35) Label1.TabIndex = 80 ' ' UiTextBox画面裁剪滤镜参数 ' UiTextBox画面裁剪滤镜参数.Dock = DockStyle.Left UiTextBox画面裁剪滤镜参数.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox画面裁剪滤镜参数.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox画面裁剪滤镜参数.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox画面裁剪滤镜参数.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox画面裁剪滤镜参数.Font = New Font("微软雅黑", 11F, FontStyle.Bold) UiTextBox画面裁剪滤镜参数.ForeColor = Color.DarkGray UiTextBox画面裁剪滤镜参数.ForeDisableColor = Color.DarkGray UiTextBox画面裁剪滤镜参数.ForeReadOnlyColor = Color.DarkGray UiTextBox画面裁剪滤镜参数.Location = New Point(173, 0) UiTextBox画面裁剪滤镜参数.Margin = New Padding(4, 5, 4, 5) UiTextBox画面裁剪滤镜参数.MinimumSize = New Size(1, 16) UiTextBox画面裁剪滤镜参数.Name = "UiTextBox画面裁剪滤镜参数" UiTextBox画面裁剪滤镜参数.Padding = New Padding(5) UiTextBox画面裁剪滤镜参数.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiTextBox画面裁剪滤镜参数.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox画面裁剪滤镜参数.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox画面裁剪滤镜参数.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox画面裁剪滤镜参数.RectSize = 2 UiTextBox画面裁剪滤镜参数.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox画面裁剪滤镜参数.ScrollBarColor = Color.DimGray UiTextBox画面裁剪滤镜参数.ScrollBarStyleInherited = False UiTextBox画面裁剪滤镜参数.ShowText = False UiTextBox画面裁剪滤镜参数.Size = New Size(200, 35) UiTextBox画面裁剪滤镜参数.TabIndex = 79 UiTextBox画面裁剪滤镜参数.TextAlignment = ContentAlignment.MiddleLeft UiTextBox画面裁剪滤镜参数.Watermark = "宽:高:左上X:左上Y" UiTextBox画面裁剪滤镜参数.WatermarkActiveColor = Color.DimGray UiTextBox画面裁剪滤镜参数.WatermarkColor = Color.DimGray ' ' Label125 ' Label125.Dock = DockStyle.Left Label125.Location = New Point(163, 0) Label125.Name = "Label125" Label125.Size = New Size(10, 35) Label125.TabIndex = 47 ' ' UiButton2 ' UiButton2.Dock = DockStyle.Left UiButton2.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton2.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton2.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton2.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton2.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton2.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton2.Font = New Font("微软雅黑", 10F) UiButton2.ForeColor = Color.Goldenrod UiButton2.ForeDisableColor = Color.Goldenrod UiButton2.ForeHoverColor = Color.Goldenrod UiButton2.ForePressColor = Color.Goldenrod UiButton2.ForeSelectedColor = Color.Goldenrod UiButton2.Location = New Point(88, 0) UiButton2.MinimumSize = New Size(1, 1) UiButton2.Name = "UiButton2" UiButton2.Radius = 0 UiButton2.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton2.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton2.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton2.RectHoverColor = Color.CornflowerBlue UiButton2.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton2.RectSelectedColor = Color.CornflowerBlue UiButton2.RectSize = 2 UiButton2.Size = New Size(75, 35) UiButton2.TabIndex = 46 UiButton2.Text = "完成" UiButton2.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Label127 ' Label127.Dock = DockStyle.Left Label127.Location = New Point(78, 0) Label127.Name = "Label127" Label127.Size = New Size(10, 35) Label127.TabIndex = 45 ' ' UiButton1 ' UiButton1.Dock = DockStyle.Left UiButton1.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.Font = New Font("微软雅黑", 10F) UiButton1.ForeColor = Color.YellowGreen UiButton1.ForeDisableColor = Color.YellowGreen UiButton1.ForeHoverColor = Color.YellowGreen UiButton1.ForePressColor = Color.YellowGreen UiButton1.ForeSelectedColor = Color.YellowGreen UiButton1.Location = New Point(3, 0) UiButton1.MinimumSize = New Size(1, 1) UiButton1.Name = "UiButton1" UiButton1.Radius = 0 UiButton1.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton1.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton1.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton1.RectHoverColor = Color.CornflowerBlue UiButton1.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton1.RectSelectedColor = Color.CornflowerBlue UiButton1.RectSize = 2 UiButton1.Size = New Size(75, 35) UiButton1.TabIndex = 44 UiButton1.Text = "打开" UiButton1.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' Panel3 ' Panel3.AutoSize = True Panel3.Controls.Add(Label123) Panel3.Controls.Add(Label122) Panel3.Controls.Add(PictureBox2) Panel3.Controls.Add(Label4) Panel3.Controls.Add(PictureBox3) Panel3.Dock = DockStyle.Top Panel3.Location = New Point(10, 10) Panel3.Name = "Panel3" Panel3.Padding = New Padding(0, 0, 0, 15) Panel3.Size = New Size(924, 121) Panel3.TabIndex = 12 ' ' Label123 ' Label123.AutoSize = True Label123.Dock = DockStyle.Top Label123.Font = New Font("微软雅黑", 9.75F) Label123.ForeColor = Color.Gray Label123.Location = New Point(0, 30) Label123.Name = "Label123" Label123.Size = New Size(503, 76) Label123.TabIndex = 5 Label123.Text = "红框是截取目标,其自己占用的像素也包含在截取中;绿框在图片外围,用作明显边界" & vbCrLf & "鼠标左键拖动来调整左上角坐标,右键拖动来调整右下角坐标;越界了会互换" & vbCrLf & "可以自己改坐标文本框,然后按 Enter 键刷新红框,这样反过来操作" & vbCrLf & "请勿乱玩框线,全程使用 CPU 绘制,刷新时 UI 线程满载运行,高刷显示器务必注意" ' ' Label122 ' Label122.AutoSize = True Label122.Dock = DockStyle.Top Label122.Font = New Font("微软雅黑", 10F) Label122.Location = New Point(0, 0) Label122.Name = "Label122" Label122.Padding = New Padding(0, 0, 0, 10) Label122.Size = New Size(135, 30) Label122.TabIndex = 85 Label122.Text = "可视化裁剪使用说明" ' ' PictureBox2 ' PictureBox2.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) PictureBox2.Dock = DockStyle.Right PictureBox2.Location = New Point(702, 0) PictureBox2.Name = "PictureBox2" PictureBox2.Size = New Size(106, 106) PictureBox2.SizeMode = PictureBoxSizeMode.Zoom PictureBox2.TabIndex = 6 PictureBox2.TabStop = False ' ' Label4 ' Label4.Dock = DockStyle.Right Label4.Location = New Point(808, 0) Label4.Name = "Label4" Label4.Size = New Size(10, 106) Label4.TabIndex = 83 ' ' PictureBox3 ' PictureBox3.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) PictureBox3.Dock = DockStyle.Right PictureBox3.Location = New Point(818, 0) PictureBox3.Name = "PictureBox3" PictureBox3.Size = New Size(106, 106) PictureBox3.SizeMode = PictureBoxSizeMode.Zoom PictureBox3.TabIndex = 84 PictureBox3.TabStop = False ' ' Label128 ' Label128.Dock = DockStyle.Top Label128.Location = New Point(20, 196) Label128.Name = "Label128" Label128.Size = New Size(944, 20) Label128.TabIndex = 83 ' ' Panel1 ' Panel1.AutoScroll = True Panel1.BackColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) Panel1.Controls.Add(Panel2) Panel1.Dock = DockStyle.Fill Panel1.Location = New Point(20, 216) Panel1.Name = "Panel1" Panel1.Size = New Size(944, 525) Panel1.TabIndex = 84 ' ' Panel2 ' Panel2.AutoSize = True Panel2.BackColor = Color.YellowGreen Panel2.Controls.Add(PictureBox1) Panel2.Location = New Point(0, 0) Panel2.Margin = New Padding(0) Panel2.Name = "Panel2" Panel2.Padding = New Padding(1) Panel2.Size = New Size(102, 102) Panel2.TabIndex = 2 Panel2.Visible = False ' ' PictureBox1 ' PictureBox1.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) PictureBox1.Location = New Point(1, 1) PictureBox1.Margin = New Padding(0) PictureBox1.Name = "PictureBox1" PictureBox1.Size = New Size(100, 100) PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize PictureBox1.TabIndex = 1 PictureBox1.TabStop = False ' ' Form画面裁剪交互窗口 ' AutoScaleDimensions = New SizeF(96F, 96F) AutoScaleMode = AutoScaleMode.Dpi BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) ClientSize = New Size(984, 761) Controls.Add(Panel1) Controls.Add(Label128) Controls.Add(Panel73) DoubleBuffered = True Font = New Font("微软雅黑", 10F) ForeColor = Color.Silver MinimumSize = New Size(1000, 800) Name = "Form画面裁剪交互窗口" Padding = New Padding(20) ShowIcon = False ShowInTaskbar = False StartPosition = FormStartPosition.Manual Text = "画面裁剪交互窗口" Panel73.ResumeLayout(False) Panel73.PerformLayout() Panel75.ResumeLayout(False) Panel3.ResumeLayout(False) Panel3.PerformLayout() CType(PictureBox2, ComponentModel.ISupportInitialize).EndInit() CType(PictureBox3, ComponentModel.ISupportInitialize).EndInit() Panel1.ResumeLayout(False) Panel1.PerformLayout() Panel2.ResumeLayout(False) Panel2.PerformLayout() CType(PictureBox1, ComponentModel.ISupportInitialize).EndInit() ResumeLayout(False) PerformLayout() End Sub Friend WithEvents Panel73 As Panel Friend WithEvents Panel75 As Panel Friend WithEvents Label125 As Label Friend WithEvents UiButton2 As Sunny.UI.UIButton Friend WithEvents Label127 As Label Friend WithEvents UiButton1 As Sunny.UI.UIButton Friend WithEvents Label128 As Label Friend WithEvents Panel1 As Panel Friend WithEvents PictureBox1 As PictureBox Friend WithEvents UiTextBox画面裁剪滤镜参数 As Sunny.UI.UITextBox Friend WithEvents UiTextBox1 As Sunny.UI.UITextBox Friend WithEvents Label1 As Label Friend WithEvents Label2 As Label Friend WithEvents Label3 As Label Friend WithEvents UiComboBox比例 As Sunny.UI.UIComboBox Friend WithEvents UiCheckBox居中 As Sunny.UI.UICheckBox Friend WithEvents Panel2 As Panel Friend WithEvents Panel3 As Panel Friend WithEvents Label123 As Label Friend WithEvents PictureBox2 As PictureBox Friend WithEvents Label4 As Label Friend WithEvents PictureBox3 As PictureBox Friend WithEvents Label122 As Label End Class ``` ## /FFmpegFreeUI/FormçÂȎ¢è£Âåª交äºÂçªÂå£.resx ```resx path="/FFmpegFreeUI/FormçÂȎ¢è£Âåª交äºÂçªÂå£.resx" <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> </root> ``` ## /FFmpegFreeUI/FormçÂȎ¢è£Âåª交äºÂçªÂå£.vb ```vb path="/FFmpegFreeUI/FormçÂȎ¢è£Âåª交äºÂçªÂå£.vb" Imports System.IO Public Class Form画面裁剪交互窗口 Private Sub Form画面裁剪交互窗口_Load(sender As Object, e As EventArgs) Handles Me.Load UiComboBox比例.ItemHeight = 30 * Form1.DPI UiCheckBox居中.CheckBoxSize = 20 * Form1.DPI PictureBox2.Width = PictureBox2.Height PictureBox3.Width = PictureBox3.Height End Sub Private Sub Form画面裁剪交互窗口_DpiChanged(sender As Object, e As DpiChangedEventArgs) Handles Me.DpiChanged UiComboBox比例.ItemHeight = 30 * Form1.DPI UiCheckBox居中.CheckBoxSize = 20 * Form1.DPI PictureBox2.Width = PictureBox2.Height PictureBox3.Width = PictureBox3.Height End Sub Public FFmpegProcess As Process Private Sub UiButton1_Click(sender As Object, e As EventArgs) Handles UiButton1.Click Dim 视频文件 As String Dim openFileDialog As New OpenFileDialog With {.Multiselect = False, .Filter = "所有文件|*.*"} If openFileDialog.ShowDialog() = DialogResult.OK Then 视频文件 = openFileDialog.FileName Else Exit Sub End If Dim FFmpegProcess As New Process FFmpegProcess = New Process() FFmpegProcess.StartInfo.FileName = "ffmpeg.exe" FFmpegProcess.StartInfo.WorkingDirectory = Application.StartupPath FFmpegProcess.StartInfo.Arguments = {{contextString}}quot;-ss {If(UiTextBox1.Text <> "", UiTextBox1.Text, "0:0:10")} -i ""{视频文件}"" -frames:v 1 -q:v 0 ""{Path.Combine(Application.StartupPath, "ScreenCropPreview.png")}"" -y" FFmpegProcess.Start() FFmpegProcess.WaitForExit() If FFmpegProcess.ExitCode <> 0 Then Exit Sub If Not FileIO.FileSystem.FileExists(Path.Combine(Application.StartupPath, "ScreenCropPreview.png")) Then Exit Sub Me.PictureBox1.Image = LoadImageFromFile(Path.Combine(Application.StartupPath, "ScreenCropPreview.png")) My.Computer.FileSystem.DeleteFile(Path.Combine(Application.StartupPath, "ScreenCropPreview.png")) Panel2.Visible = True End Sub Private Sub UiButton2_Click(sender As Object, e As EventArgs) Handles UiButton2.Click If UiTextBox画面裁剪滤镜参数.Text <> "" Then Form1.常规流程参数页面.UiTextBox画面裁剪滤镜参数.Text = UiTextBox画面裁剪滤镜参数.Text GC.Collect() Me.Dispose() End If End Sub Private Sub Form画面裁剪交互窗口_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing GC.Collect() End Sub Private cropRect As New Rectangle(0, 0, 200, 100) Private isDraggingLeftTop As Boolean = False Private isDraggingRightBottom As Boolean = False Private fixedAspectRatio As Double = 0 Private magnifierZoom As Integer = 10 Private magnifierSize As Integer = 5 Protected Overrides ReadOnly Property CreateParams() As CreateParams Get Dim cp As CreateParams = MyBase.CreateParams cp.ExStyle = cp.ExStyle Or &H2000000 ' WS_EX_COMPOSITED Return cp End Get End Property Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint If cropRect.Width > 0 AndAlso cropRect.Height > 0 Then e.Graphics.DrawRectangle(Pens.Red, cropRect) End If End Sub Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown If e.Button = MouseButtons.Left Then isDraggingLeftTop = True ElseIf e.Button = MouseButtons.Right Then isDraggingRightBottom = True End If End Sub Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove If PictureBox1.Image Is Nothing Then Return Dim imgW = PictureBox1.Width Dim imgH = PictureBox1.Height ' 检查是否需要交换拖动模式 If isDraggingLeftTop Then If e.X > cropRect.Right OrElse e.Y > cropRect.Bottom Then ' 交换拖动模式 isDraggingLeftTop = False isDraggingRightBottom = True ' 交换矩形的角落 Dim tmp = New Rectangle(cropRect.Left, cropRect.Top, cropRect.Width, cropRect.Height) cropRect = New Rectangle(tmp.Left, tmp.Top, Math.Max(1, e.X - tmp.Left), Math.Max(1, e.Y - tmp.Top)) Else ' 正常左上角拖动 Dim newX = Math.Max(0, Math.Min(e.X, cropRect.Right - 1)) Dim newY = Math.Max(0, Math.Min(e.Y, cropRect.Bottom - 1)) Dim newWidth = cropRect.Right - newX Dim newHeight = cropRect.Bottom - newY If fixedAspectRatio > 0 Then newHeight = CInt(newWidth / fixedAspectRatio) End If If newX + newWidth > imgW Then newWidth = imgW - newX If newY + newHeight > imgH Then newHeight = imgH - newY cropRect = New Rectangle(newX, newY, newWidth, newHeight) End If ElseIf isDraggingRightBottom Then If e.X < cropRect.Left OrElse e.Y < cropRect.Top Then ' 交换拖动模式 isDraggingRightBottom = False isDraggingLeftTop = True ' 交换矩形的角落 Dim tmp = New Rectangle(cropRect.Left, cropRect.Top, cropRect.Width, cropRect.Height) cropRect = New Rectangle(e.X, e.Y, tmp.Right - e.X, tmp.Bottom - e.Y) Else ' 正常右下角拖动 Dim maxX = imgW - 1 Dim maxY = imgH - 1 Dim newRight = Math.Max(cropRect.Left + 1, Math.Min(e.X, maxX)) Dim newBottom = Math.Max(cropRect.Top + 1, Math.Min(e.Y, maxY)) Dim newWidth = newRight - cropRect.Left Dim newHeight = newBottom - cropRect.Top If fixedAspectRatio > 0 Then newHeight = CInt(newWidth / fixedAspectRatio) If cropRect.Top + newHeight > imgH Then newHeight = imgH - cropRect.Top newWidth = CInt(newHeight * fixedAspectRatio) End If End If cropRect = New Rectangle(cropRect.Left, cropRect.Top, newWidth, newHeight) End If End If ' 在任何情况下都应用居中模式并更新文本框 ApplyAlignMode() UpdateCropTextBox() PictureBox1.Invalidate() UpdateMagnifiers() End Sub Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp isDraggingLeftTop = False isDraggingRightBottom = False End Sub Private Sub ApplyAlignMode() If UiCheckBox居中.Checked AndAlso PictureBox1.Image IsNot Nothing Then Dim imgW = PictureBox1.Image.Width Dim imgH = PictureBox1.Image.Height cropRect.X = (imgW - cropRect.Width) \ 2 cropRect.Y = (imgH - cropRect.Height) \ 2 End If End Sub Private Sub UpdateCropTextBox() UiTextBox画面裁剪滤镜参数.Text = {{contextString}}quot;{cropRect.Width}:{cropRect.Height}:{cropRect.X}:{cropRect.Y}" End Sub Private Sub UiTextBox画面裁剪滤镜参数_KeyDown(sender As Object, e As KeyEventArgs) Handles UiTextBox画面裁剪滤镜参数.KeyDown If e.KeyCode = Keys.Enter Then Dim txt = UiTextBox画面裁剪滤镜参数.Text.Trim() Dim parts = txt.Split(":"c) If parts.Length = 4 Then Dim w, h, x, y As Integer If Integer.TryParse(parts(0), w) AndAlso Integer.TryParse(parts(1), h) AndAlso Integer.TryParse(parts(2), x) AndAlso Integer.TryParse(parts(3), y) Then cropRect = New Rectangle(x, y, w, h) ApplyAlignMode() PictureBox1.Invalidate() End If End If End If End Sub Private Sub UiComboBox比例_SelectedIndexChanged(sender As Object, e As EventArgs) Handles UiComboBox比例.SelectedIndexChanged Select Case UiComboBox比例.SelectedIndex Case 0 : fixedAspectRatio = 0 Case 1 : fixedAspectRatio = 21 / 9 Case 2 : fixedAspectRatio = 16 / 9 Case 3 : fixedAspectRatio = 3 / 2 Case 4 : fixedAspectRatio = 2 / 1 Case 5 : fixedAspectRatio = 4 / 3 Case 6 : fixedAspectRatio = 1 End Select End Sub Sub UpdateMagnifiers() If PictureBox1.Image Is Nothing Then Return Try ' 更新左上角放大镜 Using bmp1 As New Bitmap(Math.Max(1, PictureBox2.Width), Math.Max(1, PictureBox2.Height)) Using g As Graphics = Graphics.FromImage(bmp1) g.Clear(Color.Black) g.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor g.PixelOffsetMode = Drawing2D.PixelOffsetMode.Half Dim imgW = PictureBox1.Image.Width Dim imgH = PictureBox1.Image.Height Dim centerX As Integer = Math.Max(0, Math.Min(cropRect.Left, imgW - 1)) Dim centerY As Integer = Math.Max(0, Math.Min(cropRect.Top, imgH - 1)) Dim sourceX As Integer = Math.Max(0, centerX - magnifierSize) Dim sourceY As Integer = Math.Max(0, centerY - magnifierSize) Dim sourceWidth As Integer = Math.Min(magnifierSize * 2, imgW - sourceX) Dim sourceHeight As Integer = Math.Min(magnifierSize * 2, imgH - sourceY) If sourceWidth <= 0 OrElse sourceHeight <= 0 Then g.DrawString("边界外", New Font("Arial", 10), Brushes.White, 5, 5) Else Dim sourceRect As New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight) g.DrawImage(PictureBox1.Image, New Rectangle(0, 0, bmp1.Width, bmp1.Height), sourceRect, GraphicsUnit.Pixel) Dim crossX As Integer = ((centerX - sourceX) * bmp1.Width) \ sourceWidth Dim crossY As Integer = ((centerY - sourceY) * bmp1.Height) \ sourceHeight If crossX >= 0 AndAlso crossX < bmp1.Width AndAlso crossY >= 0 AndAlso crossY < bmp1.Height Then g.DrawLine(Pens.Red, crossX, 0, crossX, bmp1.Height) g.DrawLine(Pens.Red, 0, crossY, bmp1.Width, crossY) End If 'Dim textSize As SizeF = g.MeasureString(Text, Me.Font) 'g.FillRectangle(New SolidBrush(Color.FromArgb(128, 0, 0, 0)), 0, 0, textSize.Width, textSize.Height) 'g.DrawString({{contextString}}quot;({centerX},{centerY})", Me.Font, Brushes.YellowGreen, 0, 0) End If End Using PictureBox2.Image = bmp1.Clone() End Using ' 更新右下角放大镜 Using bmp2 As New Bitmap(Math.Max(1, PictureBox3.Width), Math.Max(1, PictureBox3.Height)) Using g As Graphics = Graphics.FromImage(bmp2) g.Clear(Color.Black) g.InterpolationMode = Drawing2D.InterpolationMode.NearestNeighbor g.PixelOffsetMode = Drawing2D.PixelOffsetMode.Half Dim imgW = PictureBox1.Image.Width Dim imgH = PictureBox1.Image.Height Dim centerX As Integer = Math.Max(0, Math.Min(cropRect.Right, imgW - 1)) Dim centerY As Integer = Math.Max(0, Math.Min(cropRect.Bottom, imgH - 1)) Dim sourceX As Integer = Math.Max(0, centerX - magnifierSize) Dim sourceY As Integer = Math.Max(0, centerY - magnifierSize) Dim sourceWidth As Integer = Math.Min(magnifierSize * 2, imgW - sourceX) Dim sourceHeight As Integer = Math.Min(magnifierSize * 2, imgH - sourceY) If sourceWidth <= 0 OrElse sourceHeight <= 0 Then g.DrawString("边界外", New Font("Arial", 10), Brushes.White, 5, 5) Else Dim sourceRect As New Rectangle(sourceX, sourceY, sourceWidth, sourceHeight) g.DrawImage(PictureBox1.Image, New Rectangle(0, 0, bmp2.Width, bmp2.Height), sourceRect, GraphicsUnit.Pixel) Dim crossX As Integer = ((centerX - sourceX) * bmp2.Width) \ sourceWidth Dim crossY As Integer = ((centerY - sourceY) * bmp2.Height) \ sourceHeight If crossX >= 0 AndAlso crossX < bmp2.Width AndAlso crossY >= 0 AndAlso crossY < bmp2.Height Then g.DrawLine(Pens.Red, crossX, 0, crossX, bmp2.Height) g.DrawLine(Pens.Red, 0, crossY, bmp2.Width, crossY) End If 'Dim textSize As SizeF = g.MeasureString(Text, Me.Font) 'g.FillRectangle(New SolidBrush(Color.FromArgb(128, 0, 0, 0)), 0, 0, textSize.Width, textSize.Height) 'g.DrawString({{contextString}}quot;({centerX},{centerY})", Me.Font, Brushes.YellowGreen, 0, 0) End If End Using PictureBox3.Image = bmp2.Clone() End Using Catch ex As Exception Debug.WriteLine("放大镜更新错误: " & ex.ToString()) End Try End Sub End Class ``` ## /FFmpegFreeUI/GitHubAPI.vb ```vb path="/FFmpegFreeUI/GitHubAPI.vb" Imports System.Net.Http Imports System.Text.Json Public Class GitHubAPI Public Class Release Public 发布标题 As String = "" Public 版本标签 As String = "" Public 预览版 As Boolean = False Public 发布描述 As String = "" Public 发布时间 As String = "" Public 发布者用户名 As String = "" Public 可供下载的文件 As New List(Of KeyValuePair(Of String, String)) Public ErrorString As String = "" Public Async Function 获取仓库发布版信息Async(存储库 As String, Optional 指定标签 As String = "") As Task(Of String) Try ErrorString = "" Dim url As String = {{contextString}}quot;https://api.github.com/repos/{存储库}/releases" If Not String.IsNullOrEmpty(指定标签) Then url = {{contextString}}quot;https://api.github.com/repos/{存储库}/releases/tags/{指定标签}" End If Dim content As String = "" Using client As New HttpClient() client.DefaultRequestHeaders.Add("User-Agent", "github_api") client.Timeout = TimeSpan.FromSeconds(10) Dim response = Await client.GetAsync(url) If response.IsSuccessStatusCode Then content = Await response.Content.ReadAsStringAsync() Else ErrorString = Await response.Content.ReadAsStringAsync() Return ErrorString End If End Using ' 解析JSON Dim options As New JsonSerializerOptions With { .PropertyNameCaseInsensitive = True } If String.IsNullOrEmpty(指定标签) Then ' 获取最新发布 Dim releases = JsonSerializer.Deserialize(Of List(Of GitHubRelease))(content, options) If releases Is Nothing OrElse releases.Count = 0 Then ErrorString = "未找到任何发布信息。" Return ErrorString End If Dim release = releases(0) 填充发布信息(release) Else ' 获取指定标签发布 Dim release = JsonSerializer.Deserialize(Of GitHubRelease)(content, options) If release Is Nothing Then ErrorString = "未找到指定标签的发布信息。" Return ErrorString End If 填充发布信息(release) End If Return "" Catch ex As Exception ErrorString = ex.Message Return ErrorString End Try End Function Private Sub 填充发布信息(release As GitHubRelease) 发布标题 = If(release.Name, "") 版本标签 = If(release.Tag_name, "") 预览版 = release.Prerelease 发布描述 = If(release.Body, "") 发布时间 = If(release.Created_at, "") If 发布时间 <> "" Then 发布时间 = DateTime.Parse(发布时间).ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") End If 发布者用户名 = If(release.Author?.Login, "") 可供下载的文件.Clear() If release.Assets IsNot Nothing Then For Each asset In release.Assets If asset.Name IsNot Nothing AndAlso asset.Browser_download_url IsNot Nothing Then 可供下载的文件.Add(New KeyValuePair(Of String, String)(asset.Name, asset.Browser_download_url)) End If Next End If End Sub ' 内部类型用于反序列化 Private Class GitHubRelease Public Property Name As String Public Property Tag_name As String Public Property Prerelease As Boolean Public Property Body As String Public Property Created_at As String Public Property Author As GitHubAuthor Public Property Assets As List(Of GitHubAsset) End Class Private Class GitHubAuthor Public Property Login As String End Class Private Class GitHubAsset Public Property Name As String Public Property Browser_download_url As String End Class End Class End Class ``` ## /FFmpegFreeUI/Module1.vb ```vb path="/FFmpegFreeUI/Module1.vb" Imports System.IO Imports System.Reflection Imports System.Runtime.CompilerServices Imports System.Runtime.InteropServices Imports System.Text.Json Module Module1 <Extension> Public Sub DoubleBuffer(control As Control) Dim propertyInfo As PropertyInfo = control.GetType().GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic) propertyInfo?.SetValue(control, True, Nothing) End Sub <Extension> Public Function IsEqual(page1 As TabPage, page2 As TabPage) As Boolean If page1 Is page2 Then Return True If page1 Is Nothing OrElse page2 Is Nothing Then Return False Return page1.Name = page2.Name End Function Public JsonSO As New JsonSerializerOptions With {.WriteIndented = True} Public Sub 设置富文本框行高(RichTextBoxObject As Control, LineHeight As Integer) Dim fmt As New PARAFORMAT2() fmt.cbSize = Marshal.SizeOf(fmt) fmt.bLineSpacingRule = 4 fmt.dyLineSpacing = LineHeight fmt.dwMask = PFM_LINESPACING SendMessage(New HandleRef(RichTextBoxObject, RichTextBoxObject.Handle), EM_SETPARAFORMAT, 4, fmt) End Sub Public Const WM_USER As Integer = &H400 Public Const EM_GETPARAFORMAT As Integer = WM_USER + 61 Public Const EM_SETPARAFORMAT As Integer = WM_USER + 71 Public Const PFM_LINESPACING As UInteger = &H100 <StructLayout(LayoutKind.Sequential)> Public Structure PARAFORMAT2 Public cbSize As Integer Public dwMask As UInteger Public wNumbering As Short Public wReserved As Short Public dxStartIndent As Integer Public dxRightIndent As Integer Public dxOffset As Integer Public wAlignment As Short Public cTabCount As Short <MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public rgxTabs() As Integer ' PARAFORMAT2 增量字段 Public dySpaceBefore As Integer Public dySpaceAfter As Integer Public dyLineSpacing As Integer Public sStyle As Short Public bLineSpacingRule As Byte Public bOutlineLevel As Byte Public wShadingWeight As Short Public wShadingStyle As Short Public wNumberingStart As Short Public wNumberingStyle As Short Public wNumberingTab As Short Public wBorderSpace As Short Public wBorderWidth As Short Public wBorders As Short End Structure <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Public Function SendMessage(hWnd As HandleRef, msg As Integer, wParam As IntPtr, ByRef lParam As PARAFORMAT2) As IntPtr End Function <DllImport("kernel32.dll", SetLastError:=True)> Public Function SetThreadExecutionState(esFlags As EXECUTION_STATE) As EXECUTION_STATE End Function <Flags> Public Enum EXECUTION_STATE As UInteger ES_SYSTEM_REQUIRED = &H1 ES_DISPLAY_REQUIRED = &H2 ES_CONTINUOUS = &H80000000UI End Enum Public Sub 设定系统状态() Select Case Form1.系统状态设定 Case 0 SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS Or EXECUTION_STATE.ES_SYSTEM_REQUIRED) Case 1 SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS Or EXECUTION_STATE.ES_SYSTEM_REQUIRED Or EXECUTION_STATE.ES_DISPLAY_REQUIRED) Case 2 SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS) End Select End Sub Public Sub 恢复系统状态() Dim unused = SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS) End Sub Public Function 根据标签宽度计算显示高度(标签控件 As Label) As Integer Dim g As Graphics = Form1.CreateGraphics() Dim size As SizeF = g.MeasureString(标签控件.Text, 标签控件.Font, 标签控件.Width - 标签控件.Padding.Left - 标签控件.Padding.Right) g.Dispose() Return size.Height + 标签控件.Padding.Top + 标签控件.Padding.Bottom End Function Public Function LoadImageFromFile(File As String) As Image Using fs As New FileStream(File, FileMode.Open, FileAccess.Read) Return Image.FromStream(fs) fs.Dispose() End Using End Function Public Sub 显示窗体(哪个窗口 As Form, 以谁为基准显示 As Form) If 哪个窗口.Visible = True Then 哪个窗口.Focus() 哪个窗口.Left = (以谁为基准显示.Width - 哪个窗口.Width) * 0.5 + 以谁为基准显示.Left 哪个窗口.Top = (以谁为基准显示.Height - 哪个窗口.Height) * 0.5 + 以谁为基准显示.Top Else 哪个窗口.Left = (以谁为基准显示.Width - 哪个窗口.Width) * 0.5 + 以谁为基准显示.Left 哪个窗口.Top = (以谁为基准显示.Height - 哪个窗口.Height) * 0.5 + 以谁为基准显示.Top 哪个窗口.Show(以谁为基准显示) End If End Sub Public Sub 根据标签宽度计算并设置显示高度(标签控件 As Label) Dim g As Graphics = 标签控件.CreateGraphics() Dim size As SizeF = g.MeasureString(标签控件.Text, 标签控件.Font, 标签控件.Width - 标签控件.Padding.Left - 标签控件.Padding.Right) g.Dispose() 标签控件.Height = size.Height + 标签控件.Padding.Top + 标签控件.Padding.Bottom End Sub ''' <summary> ''' 根据核心编号列表生成 ProcessorAffinity 掩码 ''' </summary> ''' <param name="cores">逻辑核心编号,从 0 开始</param> ''' <returns>IntPtr 类型的掩码</returns> Function GetAffinityMask(cores As Integer()) As IntPtr Dim mask As Long = 0 For Each core In cores If core >= 0 AndAlso core < Environment.ProcessorCount Then mask = mask Or CLng(1) << core Else Throw New ArgumentOutOfRangeException({{contextString}}quot;核心编号 {core} 无效。系统共有 {Environment.ProcessorCount} 个核心(从 0 开始)。") End If Next Return New IntPtr(mask) End Function Public Sub SetControlFont(FontName As String, c As Control, Optional ExcludeContorl As Control() = Nothing) For Each ctrl As Control In c.Controls If ExcludeContorl IsNot Nothing Then If ExcludeContorl.Contains(ctrl) Then Continue For End If Dim controlType As Type = c.GetType() Dim propInfo As PropertyInfo = controlType.GetProperty("Font") If propInfo IsNot Nothing Then ctrl.Font = New Font(FontName, ctrl.Font.Size, ctrl.Font.Style) If ctrl.HasChildren Then SetControlFont(FontName, ctrl, ExcludeContorl) Next End Sub End Module ``` ## /FFmpegFreeUI/My Project/Application.Designer.vb ```vb path="/FFmpegFreeUI/My Project/Application.Designer.vb" '------------------------------------------------------------------------------ ' <auto-generated> ' 此代码由工具生成。 ' 运行时版本:4.0.30319.42000 ' ' 对此文件的更改可能会导致不正确的行为,并且如果 ' 重新生成代码,这些更改将会丢失。 ' </auto-generated> '------------------------------------------------------------------------------ Option Strict On Option Explicit On Namespace My '注意:此文件是自动生成的;请勿直接进行修改。若要更改, ' 或者如果您在此文件中遇到生成错误,请转至项目设计器 ' (转至“项目属性”或在解决方案资源管理器中双击“我的项目”节点), ' 然后在“应用程序”选项卡中进行更改。 ' Partial Friend Class MyApplication <Global.System.Diagnostics.DebuggerStepThroughAttribute()> _ Public Sub New() MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.ApplicationDefined) Me.IsSingleInstance = true Me.EnableVisualStyles = true Me.SaveMySettingsOnExit = false Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses Me.HighDpiMode = HighDpiMode.PerMonitorV2 End Sub <Global.System.Diagnostics.DebuggerStepThroughAttribute()> _ Protected Overrides Sub OnCreateMainForm() Me.MainForm = Global.FFmpegFreeUI.Form1 End Sub <Global.System.Diagnostics.DebuggerStepThroughAttribute()> _ Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean Me.MinimumSplashScreenDisplayTime = 0 Return MyBase.OnInitialize(commandLineArgs) End Function End Class End Namespace ``` ## /FFmpegFreeUI/My Project/Application.myapp ```myapp path="/FFmpegFreeUI/My Project/Application.myapp" <?xml version="1.0" encoding="utf-16"?> <MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <MySubMain>true</MySubMain> <MainForm>Form1</MainForm> <SingleInstance>true</SingleInstance> <ShutdownMode>0</ShutdownMode> <EnableVisualStyles>true</EnableVisualStyles> <AuthenticationMode>1</AuthenticationMode> <SaveMySettingsOnExit>false</SaveMySettingsOnExit> <HighDpiMode>3</HighDpiMode> </MyApplicationData> ``` ## /FFmpegFreeUI/My Project/Resources.Designer.vb ```vb path="/FFmpegFreeUI/My Project/Resources.Designer.vb" '------------------------------------------------------------------------------ ' <auto-generated> ' 此代码由工具生成。 ' 运行时版本:4.0.30319.42000 ' ' 对此文件的更改可能会导致不正确的行为,并且如果 ' 重新生成代码,这些更改将会丢失。 ' </auto-generated> '------------------------------------------------------------------------------ Option Strict On Option Explicit On Imports System Namespace My.Resources '此类是由 StronglyTypedResourceBuilder '类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 '若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen '(以 /str 作为命令选项),或重新生成 VS 项目。 '''<summary> ''' 一个强类型的资源类,用于查找本地化的字符串等。 '''</summary> <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _ Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ Friend Module Resources Private resourceMan As Global.System.Resources.ResourceManager Private resourceCulture As Global.System.Globalization.CultureInfo '''<summary> ''' 返回此类使用的缓存的 ResourceManager 实例。 '''</summary> <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager Get If Object.ReferenceEquals(resourceMan, Nothing) Then Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("FFmpegFreeUI.Resources", GetType(Resources).Assembly) resourceMan = temp End If Return resourceMan End Get End Property '''<summary> ''' 重写当前线程的 CurrentUICulture 属性,对 ''' 使用此强类型资源类的所有资源查找执行重写。 '''</summary> <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Friend Property Culture() As Global.System.Globalization.CultureInfo Get Return resourceCulture End Get Set resourceCulture = value End Set End Property End Module End Namespace ``` ## /FFmpegFreeUI/My Project/Resources.resx ```resx path="/FFmpegFreeUI/My Project/Resources.resx" <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </root> ``` ## /FFmpegFreeUI/æÂÂé»Âä¸Âä¸ÂæÂÂèÂÂÃ¥ÂÂ.vb ```vb path="/FFmpegFreeUI/æÂÂé»Âä¸Âä¸ÂæÂÂèÂÂÃ¥ÂÂ.vb" Imports System.ComponentModel Imports System.ComponentModel.Design <ToolboxItem(True)> <Designer("System.Windows.Forms.Design.ComponentDesigner, System.Design", GetType(IDesigner))> Public Class 暗黑上下文菜单 Inherits ContextMenuStrip Public Sub New() Renderer = New 暗黑上下文菜单自绘制() End Sub End Class ``` ## /FFmpegFreeUI/æÂÂé»Âä¸Âä¸ÂæÂÂèÂÂÃ¥ÂÂèªç»Âå¶.vb ```vb path="/FFmpegFreeUI/æÂÂé»Âä¸Âä¸ÂæÂÂèÂÂÃ¥ÂÂèªç»Âå¶.vb" Public Class 暗黑上下文菜单自绘制 Inherits ToolStripRenderer Protected Overrides Sub Initialize(toolStrip As ToolStrip) MyBase.Initialize(toolStrip) toolStrip.BackColor = ColorTranslator.FromWin32(RGB(36, 36, 36)) toolStrip.ForeColor = Color.Silver End Sub Protected Overrides Sub InitializeItem(item As ToolStripItem) MyBase.InitializeItem(item) item.Padding = New Padding(5) item.Margin = New Padding(0) 'If item.GetType() = GetType(ToolStripSeparator) Then 'End If End Sub Protected Overrides Sub OnRenderToolStripBackground(e As ToolStripRenderEventArgs) Dim g = e.Graphics Using b As New SolidBrush(ColorTranslator.FromWin32(RGB(36, 36, 36))) g.FillRectangle(b, e.AffectedBounds) End Using Using p As New Pen(ColorTranslator.FromWin32(RGB(80, 80, 80)), 2) g.DrawRectangle(p, e.AffectedBounds) End Using Using p As New Pen(ColorTranslator.FromWin32(RGB(80, 80, 80)), 2) g.DrawRectangle(p, e.AffectedBounds.Left + 1, e.AffectedBounds.Top + 1, e.AffectedBounds.Width - 2, e.AffectedBounds.Height - 2) End Using End Sub Protected Overrides Sub OnRenderImageMargin(e As ToolStripRenderEventArgs) Dim g = e.Graphics Dim rect As New Rectangle(0, 0, e.ToolStrip.Width - 1, e.ToolStrip.Height - 1) Using p As New Pen(ColorTranslator.FromWin32(RGB(80, 80, 80)), 2) g.DrawRectangle(p, rect) End Using End Sub Protected Overrides Sub OnRenderSeparator(e As ToolStripSeparatorRenderEventArgs) Select Case e.Item.Tag Case "nothing", "null" e.Item.AutoSize = False e.Item.Margin = New Padding(0) e.Item.Padding = New Padding(0) e.Item.Height = 5 * (Form1.DeviceDpi / 96) Exit Sub Case Else e.Item.AutoSize = False e.Item.Height = 2 e.Item.Margin = New Padding(0, 5 * (Form1.DeviceDpi / 96), 0, 5 * (Form1.DeviceDpi / 96)) e.Item.Padding = New Padding(0) End Select Dim g = e.Graphics Using b As New SolidBrush(ColorTranslator.FromWin32(RGB(80, 80, 80))) g.FillRectangle(b, 0, 0, e.Item.Width, e.Item.Height) End Using End Sub Protected Overrides Sub OnRenderArrow(e As ToolStripArrowRenderEventArgs) e.ArrowColor = Color.Silver e.ArrowRectangle = New Rectangle(New Point(e.ArrowRectangle.Left, e.ArrowRectangle.Top - 1), e.ArrowRectangle.Size) MyBase.OnRenderArrow(e) End Sub Protected Overrides Sub OnRenderMenuItemBackground(e As ToolStripItemRenderEventArgs) Dim g = e.Graphics If e.Item.Enabled Then If e.Item.Selected Then Using b As New SolidBrush(ColorTranslator.FromWin32(RGB(64, 64, 64))) g.FillRectangle(b, e.Item.ContentRectangle.Left + 5, e.Item.ContentRectangle.Top, e.Item.ContentRectangle.Width - 19, e.Item.ContentRectangle.Height) End Using End If End If End Sub 'Private ReadOnly ShortcutKeys As New List(Of String) From { ' "Ctrl+", "Alt+", "Shift+", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12" '} Protected Overrides Sub OnRenderItemText(e As ToolStripItemTextRenderEventArgs) Dim g = e.Graphics 'Dim isShortcutKeyText As Boolean = ShortcutKeys.Any(Function(key) e.Text.Contains(key)) If e.Item.Enabled Then Using b As New SolidBrush(e.TextColor) 'If isShortcutKeyText Then ' TextRenderer.DrawText(e.Graphics, e.Text.Replace("&", "&&"), e.TextFont, New Rectangle(e.TextRectangle.Left, e.Item.ContentRectangle.Top, e.TextRectangle.Width, e.Item.ContentRectangle.Height), e.TextColor, Nothing, TextFormatFlags.Right Or TextFormatFlags.VerticalCenter) 'Else TextRenderer.DrawText(e.Graphics, e.Text.Replace("&", "&&"), e.TextFont, New Rectangle(e.TextRectangle.Left, e.Item.ContentRectangle.Top, e.TextRectangle.Width, e.Item.ContentRectangle.Height), e.TextColor, Nothing, TextFormatFlags.VerticalCenter) 'End If End Using Else e.Item.Margin = New Padding(0) e.Item.Padding = New Padding(0) Using b As New SolidBrush(e.TextColor) TextRenderer.DrawText(e.Graphics, e.Text.Replace("&", "&&"), New Font(e.TextFont.Name, e.TextFont.Size - 2, FontStyle.Regular), New Rectangle(e.TextRectangle.Left, e.Item.ContentRectangle.Top, e.TextRectangle.Width, e.Item.ContentRectangle.Height), e.TextColor, Nothing, TextFormatFlags.VerticalCenter) End Using End If End Sub End Class ``` ## /FFmpegFreeUI/æÂÂé»ÂÃ¥ÂÂ表è§Âå¾èªç»Âå¶.vb ```vb path="/FFmpegFreeUI/æÂÂé»ÂÃ¥ÂÂ表è§Âå¾èªç»Âå¶.vb" Public Class 暗黑列表视图自绘制 Public Shared Sub 绑定列表视图事件(哪个列表视图控件 As ListView) 哪个列表视图控件.DoubleBuffer AddHandler 哪个列表视图控件.DrawSubItem, Sub(sender, e) 绘制子项(sender, e) AddHandler 哪个列表视图控件.SelectedIndexChanged, Sub(sender, e) sender.Invalidate(sender.ClientRectangle) AddHandler 哪个列表视图控件.ItemMouseHover, Sub(sender, e) sender.Invalidate(sender.ClientRectangle) End Sub Public Shared Property 项被选中时的背景颜色 As Color = ColorTranslator.FromWin32(RGB(48, 48, 48)) Public Shared Property 项被选中时的高亮遮罩颜色 As Color = Color.FromArgb(60, 200, 200, 200) ''' <summary> ''' 绑定此事件时不要绑定 DrawListViewItemEvent 事件,本事件直接绘制主项 ''' </summary> ''' <param name="哪个列表视图控件"></param> ''' <param name="e"></param> Public Shared Sub 绘制子项(哪个列表视图控件 As ListView, e As DrawListViewSubItemEventArgs) Try Form1.重新创建句柄() If Not e.Bounds.IntersectsWith(哪个列表视图控件.ClientRectangle) OrElse e.Bounds.Width = 0 Then Exit Sub Dim 项背景色 As Color = If(哪个列表视图控件.SelectedIndices.Contains(e.ItemIndex), 项被选中时的背景颜色, 哪个列表视图控件.BackColor) Dim 文本高度修正 As Integer = (e.Bounds.Height - TextRenderer.MeasureText(e.SubItem.Text, e.SubItem.Font).Height) \ 2 Dim 文本绘制区 As New Rectangle(e.Bounds.X + 5, e.Bounds.Y + 文本高度修正, e.Bounds.Width - 5, e.Bounds.Height) Dim 文字显示所需尺寸 As Size = TextRenderer.MeasureText(e.SubItem.Text, e.SubItem.Font) Dim 实际要绘制的文本 As String = e.SubItem.Text If 文字显示所需尺寸.Width > (e.Bounds.Width - 5 * Form1.DPI) Then Dim 点号所占用的宽度 As Integer = TextRenderer.MeasureText("...", e.SubItem.Font).Width Dim 实际文本可用宽度 As Integer = e.Bounds.Width - 点号所占用的宽度 While TextRenderer.MeasureText(实际要绘制的文本, e.SubItem.Font).Width > 实际文本可用宽度 AndAlso 实际要绘制的文本.Length > 0 实际要绘制的文本 = 实际要绘制的文本.Substring(0, 实际要绘制的文本.Length - 1) End While 实际要绘制的文本 &= "..." End If Using brush As New SolidBrush(项背景色) e.Graphics.FillRectangle(brush, e.Bounds) End Using TextRenderer.DrawText(e.Graphics, 实际要绘制的文本.Replace("&", "&&"), e.SubItem.Font, 文本绘制区, e.Item.ForeColor, 项背景色, TextFormatFlags.Default) Catch ex As Exception End Try End Sub End Class ``` ## /FFmpegFreeUI/çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.resx ```resx path="/FFmpegFreeUI/çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.resx" <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> </root> ``` ## /FFmpegFreeUI/çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.vb ```vb path="/FFmpegFreeUI/çÂÂé¢_常è§ÂæµÂç¨ÂÃ¥ÂÂæÂ°.vb" Public Class 界面_常规流程参数 Private Sub 界面_常规流程参数_Load(sender As Object, e As EventArgs) Handles Me.Load AddHandler UiComboBox编码类别.SelectedIndexChanged, AddressOf 视频编码类别改动事件 AddHandler UiComboBox具体编码.SelectedIndexChanged, AddressOf 视频具体编码改动事件 '============================================== AddHandler UiComboBox分辨率.TextChanged, AddressOf 视频分辨率变动事件 AddHandler UiTextBox分辨率自动计算宽度.TextChanged, AddressOf 视频分辨率自动计算宽度变动事件 AddHandler UiTextBox分辨率自动计算高度.TextChanged, AddressOf 视频分辨率自动计算高度变动事件 '============================================== AddHandler UiComboBox比特率控制方式.SelectedIndexChanged, AddressOf 视频比特率控制方式改动事件 '============================================== AddHandler UiComboBox色彩管理处理方式.TextChanged, AddressOf 色彩管理处理方式变动事件 '============================================== AddHandler UiComboBox降噪方式.TextChanged, AddressOf 视频降噪方式变动事件 '========================================== AddHandler UiComboBox音频比特率控制方式.TextChanged, AddressOf 音频比特率控制方式参数变动事件 '========================================== AddHandler UiComboBox图片编码器.TextChanged, AddressOf 图片编码器参数变动事件 '============================================== AddHandler UiButton22.Click, AddressOf 预设管理.保存预设到文件 AddHandler UiButton21.Click, AddressOf 预设管理.从文件读取预设 AddHandler UiButton13.Click, AddressOf 预设管理.重置全部包含在预设中的设置 AddHandler UiButton1.Click, Sub() 显示窗体(Form画面裁剪交互窗口, Form1) 设置富文本框行高(RichTextBox1, 350) 界面校准() End Sub Sub 视频编码类别改动事件() UiComboBox具体编码.Items.Clear() UiComboBox具体编码.Text = "" Select Case Form1.常规流程参数页面.UiComboBox编码类别.SelectedIndex Case 0 UiComboBox编码预设.Items.Clear() UiComboBox编码预设.Text = "" UiComboBox配置文件.Items.Clear() UiComboBox配置文件.Text = "" UiComboBox场景优化.Items.Clear() UiComboBox场景优化.Text = "" UiComboBox像素格式.Items.Clear() UiComboBox像素格式.Text = "" Case 1 UiComboBox具体编码.Items.Add("copy") Case 2 'H.266/VVC UiComboBox具体编码.Items.Add("libx266") UiComboBox具体编码.Items.Add("libvvenc") Case 3 'AV1 UiComboBox具体编码.Items.Add("libaom-av1") UiComboBox具体编码.Items.Add("libsvtav1") UiComboBox具体编码.Items.Add("av1_nvenc") UiComboBox具体编码.Items.Add("av1_qsv") UiComboBox具体编码.Items.Add("av1_amf") UiComboBox具体编码.Items.Add("librav1e") UiComboBox具体编码.Items.Add("av1_vaapi") Case 4 'H.265/HEVC UiComboBox具体编码.Items.Add("libx265") UiComboBox具体编码.Items.Add("hevc_nvenc") UiComboBox具体编码.Items.Add("hevc_qsv") UiComboBox具体编码.Items.Add("hevc_amf") UiComboBox具体编码.Items.Add("hevc_d3d12va") UiComboBox具体编码.Items.Add("hevc_vaapi") UiComboBox具体编码.Items.Add("hevc_vulkan") Case 5 'H.264/AVC UiComboBox具体编码.Items.Add("libx264") UiComboBox具体编码.Items.Add("h264_nvenc") UiComboBox具体编码.Items.Add("h264_qsv") UiComboBox具体编码.Items.Add("h264_amf") UiComboBox具体编码.Items.Add("h264_vaapi") UiComboBox具体编码.Items.Add("h264_vulkan") Case 6 'ProRes UiComboBox具体编码.Items.Add("prores_ks") UiComboBox具体编码.Items.Add("prores_aw") Case 7 'VP9 UiComboBox具体编码.Items.Add("libvpx-vp9") UiComboBox具体编码.Items.Add("vp9_vaapi") Case 8 'RMVB UiComboBox具体编码.Items.Add("rv10") UiComboBox具体编码.Items.Add("rv20") Case 9 'MPEG UiComboBox具体编码.Items.Add("mpeg4") UiComboBox具体编码.Items.Add("libxvid") UiComboBox具体编码.Items.Add("libxeve") Case 10 'WMV UiComboBox具体编码.Items.Add("wmv1") UiComboBox具体编码.Items.Add("wmv2") Case 11 '禁用 UiComboBox具体编码.Items.Add("") End Select If UiComboBox具体编码.Items.Count > 1 Then UiComboBox具体编码.SelectedIndex = 0 End Sub Sub 视频具体编码改动事件() UiComboBox编码预设.Items.Clear() UiComboBox编码预设.Text = "" UiComboBox配置文件.Items.Clear() UiComboBox配置文件.Text = "" UiComboBox场景优化.Items.Clear() UiComboBox场景优化.Text = "" UiComboBox像素格式.Items.Clear() UiComboBox像素格式.Text = "" If UiComboBox具体编码.SelectedIndex > -1 AndAlso 视频编码器数据库.字典.ContainsKey(UiComboBox具体编码.Text) Then UiComboBox编码预设.Items.AddRange(视频编码器数据库.字典(UiComboBox具体编码.Text).Preset.ToArray) If UiComboBox具体编码.Text = "libsvtav1" Then UiComboBox编码预设.SelectedIndex = 3 Else UiComboBox编码预设.SelectedIndex = 0 End If UiComboBox配置文件.Items.AddRange(视频编码器数据库.字典(UiComboBox具体编码.Text).Profile.ToArray) UiComboBox场景优化.Items.AddRange(视频编码器数据库.字典(UiComboBox具体编码.Text).Tune.ToArray) UiComboBox像素格式.Items.AddRange(视频编码器数据库.字典(UiComboBox具体编码.Text).Pix_fmt.ToArray) End If End Sub Sub 视频分辨率变动事件() If UiComboBox分辨率.Text <> "" Then UiTextBox分辨率自动计算宽度.Text = "" UiTextBox分辨率自动计算高度.Text = "" End If End Sub Sub 视频分辨率自动计算宽度变动事件() If UiTextBox分辨率自动计算宽度.Text <> "" Then UiTextBox分辨率自动计算高度.Text = "" UiComboBox分辨率.Text = "" End If End Sub Sub 视频分辨率自动计算高度变动事件() If UiTextBox分辨率自动计算高度.Text <> "" Then UiTextBox分辨率自动计算宽度.Text = "" UiComboBox分辨率.Text = "" End If End Sub Sub 视频比特率控制方式改动事件() Select Case UiComboBox比特率控制方式.SelectedIndex Case 0 If UiComboBox全局质量控制参数.SelectedIndex = 3 Then UiComboBox全局质量控制参数.SelectedIndex = 0 Case 1 '动态码率 VBR - 存储首选,硬件加速首选 If UiComboBox全局质量控制参数.SelectedIndex = 3 Then UiComboBox全局质量控制参数.SelectedIndex = 0 Case 2 '动态码率 VBR HQ - 硬件加速专用,极致质量 If UiComboBox全局质量控制参数.SelectedIndex = 3 Then UiComboBox全局质量控制参数.SelectedIndex = 0 Case 3 '恒定质量 CRF - 存储首选,软件编码首选 UiComboBox全局质量控制参数.SelectedIndex = 3 Case 4 '恒定量化 CQP - 不推荐,主用于研究和特定场景 UiComboBox全局质量控制参数.SelectedIndex = 2 Case 5 '平均码率 ABR - 折中方案,在一定范围内波动 If UiComboBox全局质量控制参数.SelectedIndex = 3 Then UiComboBox全局质量控制参数.SelectedIndex = 0 Case 6 '二次编码 TPE - 花费时间节省比特率 If UiComboBox全局质量控制参数.SelectedIndex = 3 Then UiComboBox全局质量控制参数.SelectedIndex = 0 Case 7 '恒定速率 CBR - 流媒体常用,不适合存储 If UiComboBox全局质量控制参数.SelectedIndex = 3 Then UiComboBox全局质量控制参数.SelectedIndex = 0 End Select End Sub Sub 视频降噪方式变动事件() Label129.Visible = False Select Case UiComboBox降噪方式.SelectedIndex Case 1 'hqdn3d - 时空域降噪,去除普通噪声并保留细节 Label降噪参数1.Text = "亮度空间强度" & vbCrLf & "luma_spatial" UiTextBox降噪参数1.Watermark = "默认 4" Label降噪参数2.Text = "色度空间强度" & vbCrLf & "chroma_spatial" UiTextBox降噪参数2.Watermark = "默认 3" Label降噪参数3.Text = "亮度时间强度" & vbCrLf & "luma_tmp" UiTextBox降噪参数3.Watermark = "默认 6" Label降噪参数4.Text = "色度时间强度" & vbCrLf & "chroma_tmp" UiTextBox降噪参数4.Watermark = "默认 1" Panel39.Visible = True Panel38.Visible = True Case 2 'nlmeans - 高级降噪,效果更好且计算量更大 Label降噪参数1.Text = "降噪强度" & vbCrLf & "范围 1~10" UiTextBox降噪参数1.Watermark = "默认 1" Label降噪参数2.Text = "参考像素块大小" & vbCrLf & "必须是奇数" UiTextBox降噪参数2.Watermark = "默认 7" Label降噪参数3.Text = "色度降噪" & vbCrLf & "启用 = 1 禁用 = 0" UiTextBox降噪参数3.Watermark = "" Label降噪参数4.Text = "搜索半径" & vbCrLf & "越大越慢" UiTextBox降噪参数4.Watermark = "默认 7" Panel39.Visible = True Panel38.Visible = True Case 3 'atadenoise - 轻量级时间域降噪 Label降噪参数1.Text = "亮度静态帧加权" & vbCrLf & "0a" UiTextBox降噪参数1.Watermark = "默认 0.02" Label降噪参数2.Text = "亮度动态帧加权" & vbCrLf & "0b" UiTextBox降噪参数2.Watermark = "默认 0.04" Label降噪参数3.Text = "色度静态加权" & vbCrLf & "1a" UiTextBox降噪参数3.Watermark = "默认 0.02" Label降噪参数4.Text = "色度动态加权" & vbCrLf & "1b" UiTextBox降噪参数4.Watermark = "默认 0.04" Panel39.Visible = True Panel38.Visible = True Case 4 'bm3d - 高质量降噪,适合严重噪声且消耗大量性能 Label降噪参数1.Text = "噪声强度" & vbCrLf & "sigma" UiTextBox降噪参数1.Watermark = "默认 1" Label降噪参数2.Text = "块大小 建议 4~8" & vbCrLf & "block" UiTextBox降噪参数2.Watermark = "默认 4" Label降噪参数3.Text = "块步长" & vbCrLf & "bstep" UiTextBox降噪参数3.Watermark = "block/2" Label降噪参数4.Text = "相似块数量" & vbCrLf & "group" UiTextBox降噪参数4.Watermark = "默认 1" Panel39.Visible = True Panel38.Visible = True Case 5 '外部 AviSynth - 加载 avs 文件 UiTextBox降噪参数1.Text = "" UiTextBox降噪参数2.Text = "" UiTextBox降噪参数3.Text = "" UiTextBox降噪参数4.Text = "" Panel38.Visible = False Panel39.Visible = False Label129.Visible = True Form1.常规流程参数页面.UiTextBox之前参数.Text = "-i <inputfile>" Form1.常规流程参数页面.UiTextBox将视频参数用于这些流.Text = "0:v:0" Form1.常规流程参数页面.UiTextBox将音频参数用于这些流.Text = "1:a:0" Case Else UiTextBox降噪参数1.Text = "" UiTextBox降噪参数2.Text = "" UiTextBox降噪参数3.Text = "" UiTextBox降噪参数4.Text = "" Panel38.Visible = False Panel39.Visible = False End Select End Sub Sub 色彩管理处理方式变动事件() If UiComboBox色彩管理处理方式.Text = "" Then UiComboBox矩阵系数.Text = "" UiComboBox色域.Text = "" UiComboBox传输特性.Text = "" UiComboBox色彩范围.Text = "" End If End Sub Sub 音频比特率控制方式参数变动事件() If UiComboBox音频比特率控制方式.Text = "" Then UiTextBox音频基础比特率.Text = "" UiTextBox音频比特率质量值.Text = "" End If End Sub Sub 图片编码器参数变动事件() If UiComboBox图片编码器.Text = "" Then UiTextBox图片编码器质量.Text = "" End If End Sub Private Sub UiTabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles UiTabControl1.SelectedIndexChanged 界面校准() End Sub Sub 界面校准() Dim 选项卡 As TabPage = UiTabControl1.SelectedTab Select Case True Case 选项卡.IsEqual(TabPage解码参数) UiComboBox解码器.ItemHeight = 30 * Form1.DPI UiComboBox解码数据格式.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(TabPage视频参数) UiComboBox编码类别.ItemHeight = 30 * Form1.DPI UiComboBox具体编码.ItemHeight = 30 * Form1.DPI UiComboBox编码预设.ItemHeight = 30 * Form1.DPI UiComboBox分辨率.ItemHeight = 30 * Form1.DPI UiComboBox帧速率.ItemHeight = 30 * Form1.DPI UiComboBox比特率控制方式.ItemHeight = 30 * Form1.DPI UiComboBox全局质量控制参数.ItemHeight = 30 * Form1.DPI UiComboBox配置文件.ItemHeight = 30 * Form1.DPI UiComboBox场景优化.ItemHeight = 30 * Form1.DPI UiComboBox像素格式.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(TabPage高级视频参数) UiComboBox矩阵系数.ItemHeight = 30 * Form1.DPI UiComboBox色域.ItemHeight = 30 * Form1.DPI UiComboBox传输特性.ItemHeight = 30 * Form1.DPI UiComboBox色彩范围.ItemHeight = 30 * Form1.DPI UiComboBox色彩管理处理方式.ItemHeight = 30 * Form1.DPI UiComboBox降噪方式.ItemHeight = 30 * Form1.DPI UiComboBox逐行与隔行处理方式.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(TabPage音频参数) UiComboBox音频编码器.ItemHeight = 30 * Form1.DPI UiComboBox音频比特率控制方式.ItemHeight = 30 * Form1.DPI UiComboBox声道布局.ItemHeight = 30 * Form1.DPI UiComboBox采样率.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(TabPage图片参数) UiComboBox图片编码器.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(TabPage自定义参数) Case 选项卡.IsEqual(TabPage流控制) UiCheckBox保留其他视频流.CheckBoxSize = 20 * Form1.DPI UiCheckBox保留其他音频流.CheckBoxSize = 20 * Form1.DPI UiCheckBox保留内嵌字幕流.CheckBoxSize = 20 * Form1.DPI UiCheckBox保留元数据.CheckBoxSize = 20 * Form1.DPI UiCheckBox保留章节信息.CheckBoxSize = 20 * Form1.DPI UiCheckBox自动混流同名字幕文件.CheckBoxSize = 20 * Form1.DPI Case 选项卡.IsEqual(TabPage预设管理) Dim a As New 预设数据类型 预设管理.储存预设(a) RichTextBox1.Size = New Size(RichTextBox1.Parent.Width, RichTextBox1.Parent.Height - RichTextBox1.Parent.Padding.Top * 2) RichTextBox1.Text = "ffmpeg.exe " & 预设管理.将预设数据转换为命令行(a, "假装这是输入目录\假装这是输入文件", "假装这是输出目录\假装这是输出文件") End Select End Sub End Class ``` ## /FFmpegFreeUI/çÂÂé¢_æ··æµÂ.Designer.vb ```vb path="/FFmpegFreeUI/çÂÂé¢_æ··æµÂ.Designer.vb" <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class 界面_混流 Inherits System.Windows.Forms.UserControl 'UserControl 重写释放以清理组件列表。 <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub 'Windows 窗体设计器所必需的 Private components As System.ComponentModel.IContainer '注意: 以下过程是 Windows 窗体设计器所必需的 '可以使用 Windows 窗体设计器修改它。 '不要使用代码编辑器修改它。 <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Panel73 = New Panel() Label123 = New Label() Label20 = New Label() Panel1 = New Panel() Panel2 = New Panel() ListView1 = New ListView() Panel3 = New Panel() Panel62 = New Panel() UiTextBox2 = New Sunny.UI.UITextBox() Label7 = New Label() UiTextBox1 = New Sunny.UI.UITextBox() Label101 = New Label() Panel4 = New Panel() Label5 = New Label() Label4 = New Label() Label3 = New Label() Label9 = New Label() Label10 = New Label() Label1 = New Label() Label2 = New Label() Label11 = New Label() Panel5 = New Panel() Panel75 = New Panel() UiTextBox将视频参数用于这些流 = New Sunny.UI.UITextBox() Label6 = New Label() Label132 = New Label() UiButton1 = New Sunny.UI.UIButton() UiButton启动混流 = New Sunny.UI.UIButton() Panel73.SuspendLayout() Panel1.SuspendLayout() Panel2.SuspendLayout() Panel3.SuspendLayout() Panel62.SuspendLayout() Panel4.SuspendLayout() Panel5.SuspendLayout() Panel75.SuspendLayout() SuspendLayout() ' ' Panel73 ' Panel73.AutoSize = True Panel73.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel73.Controls.Add(Label123) Panel73.Dock = DockStyle.Top Panel73.Location = New Point(20, 20) Panel73.Name = "Panel73" Panel73.Padding = New Padding(10) Panel73.Size = New Size(1060, 58) Panel73.TabIndex = 80 ' ' Label123 ' Label123.AutoSize = True Label123.Dock = DockStyle.Top Label123.Font = New Font("微软雅黑", 9.75F) Label123.ForeColor = Color.Gray Label123.Location = New Point(10, 10) Label123.Name = "Label123" Label123.Size = New Size(348, 38) Label123.TabIndex = 4 Label123.Text = "此功能为扩展,不走编码队列,直接让 ffmpeg 以原样运行" & vbCrLf & "仅提供基础混流,高级功能请移步 MKVToolNix GUI" ' ' Label20 ' Label20.Dock = DockStyle.Top Label20.Location = New Point(20, 78) Label20.Name = "Label20" Label20.Size = New Size(1060, 20) Label20.TabIndex = 82 ' ' Panel1 ' Panel1.AutoSize = True Panel1.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel1.Controls.Add(Panel2) Panel1.Controls.Add(Panel3) Panel1.Controls.Add(Panel4) Panel1.Controls.Add(Label1) Panel1.Controls.Add(Label2) Panel1.Dock = DockStyle.Fill Panel1.Location = New Point(20, 98) Panel1.Name = "Panel1" Panel1.Padding = New Padding(10) Panel1.Size = New Size(1060, 507) Panel1.TabIndex = 83 ' ' Panel2 ' Panel2.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) Panel2.Controls.Add(ListView1) Panel2.Dock = DockStyle.Fill Panel2.Location = New Point(10, 98) Panel2.Name = "Panel2" Panel2.Padding = New Padding(0, 10, 0, 10) Panel2.Size = New Size(1040, 235) Panel2.TabIndex = 5 ' ' ListView1 ' ListView1.BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) ListView1.BorderStyle = BorderStyle.None ListView1.Dock = DockStyle.Fill ListView1.Font = New Font("微软雅黑", 9.75F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ListView1.Location = New Point(0, 10) ListView1.Name = "ListView1" ListView1.Size = New Size(1040, 215) ListView1.TabIndex = 0 ListView1.UseCompatibleStateImageBehavior = False ' ' Panel3 ' Panel3.Controls.Add(Panel62) Panel3.Dock = DockStyle.Bottom Panel3.Location = New Point(10, 333) Panel3.Name = "Panel3" Panel3.Size = New Size(1040, 164) Panel3.TabIndex = 6 ' ' Panel62 ' Panel62.Controls.Add(UiTextBox2) Panel62.Controls.Add(Label7) Panel62.Controls.Add(UiTextBox1) Panel62.Controls.Add(Label101) Panel62.Dock = DockStyle.Top Panel62.Location = New Point(0, 0) Panel62.Name = "Panel62" Panel62.Padding = New Padding(0, 0, 0, 10) Panel62.Size = New Size(1040, 40) Panel62.TabIndex = 5 ' ' UiTextBox2 ' UiTextBox2.Dock = DockStyle.Left UiTextBox2.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox2.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox2.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox2.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox2.Font = New Font("微软雅黑", 9.75F) UiTextBox2.ForeColor = Color.DarkGray UiTextBox2.ForeDisableColor = Color.DarkGray UiTextBox2.ForeReadOnlyColor = Color.DarkGray UiTextBox2.Location = New Point(300, 0) UiTextBox2.Margin = New Padding(4, 5, 4, 5) UiTextBox2.MinimumSize = New Size(1, 16) UiTextBox2.Name = "UiTextBox2" UiTextBox2.Padding = New Padding(5) UiTextBox2.Radius = 30 UiTextBox2.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox2.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox2.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox2.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox2.ScrollBarColor = Color.DimGray UiTextBox2.ScrollBarStyleInherited = False UiTextBox2.ShowText = False UiTextBox2.Size = New Size(100, 30) UiTextBox2.TabIndex = 98 UiTextBox2.TextAlignment = ContentAlignment.MiddleLeft UiTextBox2.Watermark = "" UiTextBox2.WatermarkActiveColor = Color.DimGray UiTextBox2.WatermarkColor = Color.DimGray ' ' Label7 ' Label7.Dock = DockStyle.Left Label7.Font = New Font("微软雅黑", 9.75F) Label7.Location = New Point(200, 0) Label7.Name = "Label7" Label7.Padding = New Padding(10, 0, 0, 0) Label7.Size = New Size(100, 30) Label7.TabIndex = 97 Label7.Text = "语言" Label7.TextAlign = ContentAlignment.MiddleLeft ' ' UiTextBox1 ' UiTextBox1.Dock = DockStyle.Left UiTextBox1.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox1.Font = New Font("微软雅黑", 9.75F) UiTextBox1.ForeColor = Color.DarkGray UiTextBox1.ForeDisableColor = Color.DarkGray UiTextBox1.ForeReadOnlyColor = Color.DarkGray UiTextBox1.Location = New Point(100, 0) UiTextBox1.Margin = New Padding(4, 5, 4, 5) UiTextBox1.MinimumSize = New Size(1, 16) UiTextBox1.Name = "UiTextBox1" UiTextBox1.Padding = New Padding(5) UiTextBox1.Radius = 30 UiTextBox1.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox1.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox1.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox1.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox1.ScrollBarColor = Color.DimGray UiTextBox1.ScrollBarStyleInherited = False UiTextBox1.ShowText = False UiTextBox1.Size = New Size(100, 30) UiTextBox1.TabIndex = 96 UiTextBox1.TextAlignment = ContentAlignment.MiddleLeft UiTextBox1.Watermark = "" UiTextBox1.WatermarkActiveColor = Color.DimGray UiTextBox1.WatermarkColor = Color.DimGray ' ' Label101 ' Label101.Dock = DockStyle.Left Label101.Font = New Font("微软雅黑", 9.75F) Label101.Location = New Point(0, 0) Label101.Name = "Label101" Label101.Size = New Size(100, 30) Label101.TabIndex = 95 Label101.Text = "视频流索引号" Label101.TextAlign = ContentAlignment.MiddleLeft ' ' Panel4 ' Panel4.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel4.Controls.Add(Label5) Panel4.Controls.Add(Label4) Panel4.Controls.Add(Label3) Panel4.Controls.Add(Label9) Panel4.Controls.Add(Label10) Panel4.Dock = DockStyle.Top Panel4.Location = New Point(10, 58) Panel4.Name = "Panel4" Panel4.Padding = New Padding(10, 0, 0, 0) Panel4.Size = New Size(1040, 40) Panel4.TabIndex = 7 ' ' Label5 ' Label5.Dock = DockStyle.Fill Label5.Font = New Font("微软雅黑", 10F) Label5.Location = New Point(885, 0) Label5.Name = "Label5" Label5.Size = New Size(155, 40) Label5.TabIndex = 4 Label5.Text = "使用章节" Label5.TextAlign = ContentAlignment.MiddleLeft ' ' Label4 ' Label4.Dock = DockStyle.Left Label4.Font = New Font("微软雅黑", 10F) Label4.Location = New Point(710, 0) Label4.Name = "Label4" Label4.Size = New Size(175, 40) Label4.TabIndex = 3 Label4.Text = "使用字幕流" Label4.TextAlign = ContentAlignment.MiddleLeft ' ' Label3 ' Label3.Dock = DockStyle.Left Label3.Font = New Font("微软雅黑", 10F) Label3.Location = New Point(535, 0) Label3.Name = "Label3" Label3.Size = New Size(175, 40) Label3.TabIndex = 2 Label3.Text = "使用音频流" Label3.TextAlign = ContentAlignment.MiddleLeft ' ' Label9 ' Label9.Dock = DockStyle.Left Label9.Font = New Font("微软雅黑", 10F) Label9.Location = New Point(360, 0) Label9.Name = "Label9" Label9.Size = New Size(175, 40) Label9.TabIndex = 1 Label9.Text = "使用视频流" Label9.TextAlign = ContentAlignment.MiddleLeft ' ' Label10 ' Label10.Dock = DockStyle.Left Label10.Font = New Font("微软雅黑", 10F) Label10.Location = New Point(10, 0) Label10.Name = "Label10" Label10.Size = New Size(350, 40) Label10.TabIndex = 0 Label10.Text = "输入文件" Label10.TextAlign = ContentAlignment.MiddleLeft ' ' Label1 ' Label1.AutoSize = True Label1.Dock = DockStyle.Top Label1.Font = New Font("微软雅黑", 9.75F) Label1.ForeColor = Color.Gray Label1.Location = New Point(10, 39) Label1.Name = "Label1" Label1.Size = New Size(178, 19) Label1.TabIndex = 4 Label1.Text = "然后选中来编辑要使用哪些流" ' ' Label2 ' Label2.AutoSize = True Label2.Dock = DockStyle.Top Label2.Font = New Font("微软雅黑", 11F, FontStyle.Bold) Label2.Location = New Point(10, 10) Label2.Name = "Label2" Label2.Padding = New Padding(0, 0, 0, 10) Label2.Size = New Size(99, 29) Label2.TabIndex = 0 Label2.Text = "添加输入文件" ' ' Label11 ' Label11.Dock = DockStyle.Bottom Label11.Location = New Point(20, 605) Label11.Name = "Label11" Label11.Size = New Size(1060, 20) Label11.TabIndex = 84 ' ' Panel5 ' Panel5.AutoSize = True Panel5.BackColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) Panel5.Controls.Add(Panel75) Panel5.Dock = DockStyle.Bottom Panel5.Location = New Point(20, 625) Panel5.Name = "Panel5" Panel5.Padding = New Padding(10) Panel5.Size = New Size(1060, 55) Panel5.TabIndex = 85 ' ' Panel75 ' Panel75.Controls.Add(UiTextBox将视频参数用于这些流) Panel75.Controls.Add(Label6) Panel75.Controls.Add(Label132) Panel75.Controls.Add(UiButton1) Panel75.Controls.Add(UiButton启动混流) Panel75.Dock = DockStyle.Top Panel75.Location = New Point(10, 10) Panel75.Name = "Panel75" Panel75.Size = New Size(1040, 35) Panel75.TabIndex = 12 ' ' UiTextBox将视频参数用于这些流 ' UiTextBox将视频参数用于这些流.Dock = DockStyle.Fill UiTextBox将视频参数用于这些流.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox将视频参数用于这些流.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox将视频参数用于这些流.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox将视频参数用于这些流.FillReadOnlyColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiTextBox将视频参数用于这些流.Font = New Font("微软雅黑", 9.75F) UiTextBox将视频参数用于这些流.ForeColor = Color.DarkGray UiTextBox将视频参数用于这些流.ForeDisableColor = Color.DarkGray UiTextBox将视频参数用于这些流.ForeReadOnlyColor = Color.DarkGray UiTextBox将视频参数用于这些流.Location = New Point(130, 0) UiTextBox将视频参数用于这些流.Margin = New Padding(4, 5, 4, 5) UiTextBox将视频参数用于这些流.MinimumSize = New Size(1, 16) UiTextBox将视频参数用于这些流.Name = "UiTextBox将视频参数用于这些流" UiTextBox将视频参数用于这些流.Padding = New Padding(5) UiTextBox将视频参数用于这些流.Radius = 35 UiTextBox将视频参数用于这些流.RectColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox将视频参数用于这些流.RectDisableColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox将视频参数用于这些流.RectReadOnlyColor = Color.FromArgb(CByte(80), CByte(80), CByte(80)) UiTextBox将视频参数用于这些流.ScrollBarBackColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiTextBox将视频参数用于这些流.ScrollBarColor = Color.DimGray UiTextBox将视频参数用于这些流.ScrollBarStyleInherited = False UiTextBox将视频参数用于这些流.ShowText = False UiTextBox将视频参数用于这些流.Size = New Size(780, 35) UiTextBox将视频参数用于这些流.TabIndex = 100 UiTextBox将视频参数用于这些流.TextAlignment = ContentAlignment.MiddleLeft UiTextBox将视频参数用于这些流.Watermark = "输出到目标位置" UiTextBox将视频参数用于这些流.WatermarkActiveColor = Color.DimGray UiTextBox将视频参数用于这些流.WatermarkColor = Color.DimGray ' ' Label6 ' Label6.Dock = DockStyle.Right Label6.Location = New Point(910, 0) Label6.Name = "Label6" Label6.Size = New Size(10, 35) Label6.TabIndex = 99 ' ' Label132 ' Label132.Dock = DockStyle.Left Label132.Location = New Point(120, 0) Label132.Name = "Label132" Label132.Size = New Size(10, 35) Label132.TabIndex = 98 ' ' UiButton1 ' UiButton1.AllowDrop = True UiButton1.Dock = DockStyle.Left UiButton1.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton1.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton1.Font = New Font("微软雅黑", 10F) UiButton1.ForeColor = Color.YellowGreen UiButton1.ForeDisableColor = Color.YellowGreen UiButton1.ForeHoverColor = Color.YellowGreen UiButton1.ForePressColor = Color.YellowGreen UiButton1.ForeSelectedColor = Color.YellowGreen UiButton1.Location = New Point(0, 0) UiButton1.MinimumSize = New Size(1, 1) UiButton1.Name = "UiButton1" UiButton1.Radius = 0 UiButton1.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton1.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton1.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton1.RectHoverColor = Color.CornflowerBlue UiButton1.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton1.RectSelectedColor = Color.CornflowerBlue UiButton1.RectSize = 2 UiButton1.Size = New Size(120, 35) UiButton1.TabIndex = 45 UiButton1.Text = "导出位置" UiButton1.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' UiButton启动混流 ' UiButton启动混流.AllowDrop = True UiButton启动混流.Dock = DockStyle.Right UiButton启动混流.FillColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton启动混流.FillColor2 = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton启动混流.FillDisableColor = Color.FromArgb(CByte(36), CByte(36), CByte(36)) UiButton启动混流.FillHoverColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton启动混流.FillPressColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton启动混流.FillSelectedColor = Color.FromArgb(CByte(48), CByte(48), CByte(48)) UiButton启动混流.Font = New Font("微软雅黑", 10F) UiButton启动混流.ForeColor = Color.YellowGreen UiButton启动混流.ForeDisableColor = Color.YellowGreen UiButton启动混流.ForeHoverColor = Color.YellowGreen UiButton启动混流.ForePressColor = Color.YellowGreen UiButton启动混流.ForeSelectedColor = Color.YellowGreen UiButton启动混流.Location = New Point(920, 0) UiButton启动混流.MinimumSize = New Size(1, 1) UiButton启动混流.Name = "UiButton启动混流" UiButton启动混流.Radius = 0 UiButton启动混流.RadiusSides = Sunny.UI.UICornerRadiusSides.None UiButton启动混流.RectColor = Color.FromArgb(CByte(64), CByte(64), CByte(64)) UiButton启动混流.RectDisableColor = Color.FromArgb(CByte(12), CByte(12), CByte(12)) UiButton启动混流.RectHoverColor = Color.CornflowerBlue UiButton启动混流.RectPressColor = Color.FromArgb(CByte(64), CByte(148), CByte(64)) UiButton启动混流.RectSelectedColor = Color.CornflowerBlue UiButton启动混流.RectSize = 2 UiButton启动混流.Size = New Size(120, 35) UiButton启动混流.TabIndex = 44 UiButton启动混流.Text = "启动混流" UiButton启动混流.TipsFont = New Font("宋体", 9F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ' ' 界面_混流 ' AutoScaleDimensions = New SizeF(96F, 96F) AutoScaleMode = AutoScaleMode.Dpi BackColor = Color.FromArgb(CByte(24), CByte(24), CByte(24)) Controls.Add(Panel1) Controls.Add(Label11) Controls.Add(Label20) Controls.Add(Panel73) Controls.Add(Panel5) Font = New Font("微软雅黑", 9.75F, FontStyle.Regular, GraphicsUnit.Point, CByte(134)) ForeColor = Color.Silver Name = "界面_混流" Padding = New Padding(20) Size = New Size(1100, 700) Panel73.ResumeLayout(False) Panel73.PerformLayout() Panel1.ResumeLayout(False) Panel1.PerformLayout() Panel2.ResumeLayout(False) Panel3.ResumeLayout(False) Panel62.ResumeLayout(False) Panel4.ResumeLayout(False) Panel5.ResumeLayout(False) Panel75.ResumeLayout(False) ResumeLayout(False) PerformLayout() End Sub Friend WithEvents Panel73 As Panel Friend WithEvents Label123 As Label Friend WithEvents Label20 As Label Friend WithEvents Panel1 As Panel Friend WithEvents Label1 As Label Friend WithEvents Label2 As Label Friend WithEvents Panel3 As Panel Friend WithEvents Panel2 As Panel Friend WithEvents ListView1 As ListView Friend WithEvents Panel4 As Panel Friend WithEvents Label5 As Label Friend WithEvents Label4 As Label Friend WithEvents Label3 As Label Friend WithEvents Label9 As Label Friend WithEvents Label10 As Label Friend WithEvents Label11 As Label Friend WithEvents Panel5 As Panel Friend WithEvents Panel75 As Panel Friend WithEvents UiButton启动混流 As Sunny.UI.UIButton Friend WithEvents UiButton1 As Sunny.UI.UIButton Friend WithEvents Label6 As Label Friend WithEvents Label132 As Label Friend WithEvents UiTextBox将视频参数用于这些流 As Sunny.UI.UITextBox Friend WithEvents Panel62 As Panel Friend WithEvents UiTextBox1 As Sunny.UI.UITextBox Friend WithEvents Label101 As Label Friend WithEvents UiTextBox2 As Sunny.UI.UITextBox Friend WithEvents Label7 As Label End Class ``` ## /FFmpegFreeUI/çÂÂé¢_æ··æµÂ.resx ```resx path="/FFmpegFreeUI/çÂÂé¢_æ··æµÂ.resx" <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> </root> ``` ## /FFmpegFreeUI/çÂÂé¢_æ··æµÂ.vb ```vb path="/FFmpegFreeUI/çÂÂé¢_æ··æµÂ.vb" Public Class 界面_混流 Private Sub 界面_混流_Load(sender As Object, e As EventArgs) Handles Me.Load End Sub End Class ``` ## /FFmpegFreeUI/çÂÂé¢æÂ§å¶.vb ```vb path="/FFmpegFreeUI/çÂÂé¢æÂ§å¶.vb" Imports System.IO Public Class 界面控制 Public Shared Sub 初始化() Dim 字体列表 As New List(Of String) For Each 字体 As FontFamily In FontFamily.Families 字体列表.Add(字体.Name) Next 字体列表.Sort() If My.Computer.FileSystem.FileExists(Path.Combine(Application.StartupPath, "FontName.txt")) Then Form1.UiComboBox1.Text = My.Computer.FileSystem.ReadAllText(Path.Combine(Application.StartupPath, "FontName.txt")) If Form1.UiComboBox1.Text = "" Then Exit Sub SetControlFont(Form1.UiComboBox1.Text, Form1, {Form1.UiComboBox1}) End If Form1.UiComboBox1.Items.AddRange(字体列表.ToArray) AddHandler Form1.UiButton4.Click, Sub() If Form1.UiComboBox1.Text = "" Then Exit Sub SetControlFont(Form1.UiComboBox1.Text, Form1, {Form1.UiComboBox1}) End Sub AddHandler Form1.UiComboBox1.SelectedIndexChanged, Sub() If Form1.UiComboBox1.Text = "" Then Exit Sub Form1.Label11.Font = New Font(Form1.UiComboBox1.Text, Form1.Label11.Font.Size) End Sub Form1.UiComboBox2.SelectedIndex = 0 AddHandler Form1.UiComboBox2.SelectedIndexChanged, Sub() If Form1.UiComboBox2.Text = "" Then Exit Sub If Form1.UiComboBox2.SelectedIndex < 0 Then Exit Sub Form1.系统状态设定 = Form1.UiComboBox2.SelectedIndex End Sub Form1.编码队列右键菜单 = New 暗黑上下文菜单 With {.ShowImageMargin = False, .Font = Form1.Font} Form1.ListView1.ContextMenuStrip = Form1.编码队列右键菜单 Form1.编码队列右键菜单.Items.AddRange(New ToolStripItem() { New ToolStripSeparator() With {.Tag = "null"}, New ToolStripMenuItem("任务状态控制") With {.ForeColor = Color.CornflowerBlue, .Enabled = False}, New ToolStripMenuItem("全新开始任务", Nothing, AddressOf 界面控制_编码队列.开始任务) With {.ForeColor = Color.YellowGreen}, New ToolStripMenuItem("暂停(挂起进程)", Nothing, AddressOf 界面控制_编码队列.暂停任务) With {.ForeColor = Color.Goldenrod}, New ToolStripMenuItem("继续(恢复进程)", Nothing, AddressOf 界面控制_编码队列.恢复任务) With {.ForeColor = Color.YellowGreen}, New ToolStripMenuItem("停止(关闭进程)", Nothing, AddressOf 界面控制_编码队列.停止任务) With {.ForeColor = Color.IndianRed}, New ToolStripMenuItem("移除", Nothing, AddressOf 界面控制_编码队列.移除任务) With {.ForeColor = Color.IndianRed}, New ToolStripMenuItem("重置状态", Nothing, AddressOf 界面控制_编码队列.重置任务), New ToolStripSeparator(), New ToolStripMenuItem("任务管理") With {.ForeColor = Color.CornflowerBlue, .Enabled = False}, New ToolStripMenuItem("全选", Nothing, AddressOf 界面控制_编码队列.全选任务), New ToolStripMenuItem("定位输出文件", Nothing, AddressOf 界面控制_编码队列.定位输出) With {.ForeColor = Color.MediumPurple}, New ToolStripMenuItem("重新配置", Nothing, AddressOf 界面控制_编码队列.重新配置) With {.ForeColor = Color.CornflowerBlue}, New ToolStripMenuItem("重新添加", Nothing, AddressOf 界面控制_编码队列.重新添加) With {.ForeColor = Color.CornflowerBlue}, New ToolStripMenuItem("导出配置", Nothing, AddressOf 界面控制_编码队列.导出配置), New ToolStripSeparator() With {.Tag = "null"} }) 设置富文本框行高(Form1.RichTextBox1, 350) Form1.RichTextBox1.AllowDrop = True Form1.Panel6.Controls.Add(Form1.常规流程参数页面) Form1.常规流程参数页面.Dock = DockStyle.Fill Form1.UiComboBox21.SelectedIndex = 0 Form1.Panel41.AutoSize = True AddHandler Form1.UiTabControlMenu1.SelectedIndexChanged, AddressOf 界面校准 AddHandler Form1.LinkLabel7.LinkClicked, Sub() Process.Start(New ProcessStartInfo With {.FileName = "https://github.com/Lake1059/FFmpegFreeUI", .UseShellExecute = True}) AddHandler Form1.LinkLabel2.LinkClicked, Sub() Process.Start(New ProcessStartInfo With {.FileName = "https://ffmpeg.org/documentation.html", .UseShellExecute = True}) AddHandler Form1.LinkLabel3.LinkClicked, Sub() Process.Start(New ProcessStartInfo With {.FileName = "https://www.gyan.dev/ffmpeg/builds/", .UseShellExecute = True}) AddHandler Form1.LinkLabel4.LinkClicked, Sub() Process.Start(New ProcessStartInfo With {.FileName = "https://github.com/BtbN/FFmpeg-Builds/releases", .UseShellExecute = True}) AddHandler Form1.LinkLabel5.LinkClicked, Sub() Process.Start(New ProcessStartInfo With {.FileName = "https://afdian.com/a/1059Studio", .UseShellExecute = True}) AddHandler Form1.LinkLabel6.LinkClicked, Sub() Process.Start(New ProcessStartInfo With {.FileName = "https://space.bilibili.com/319785096", .UseShellExecute = True}) 暗黑列表视图自绘制.绑定列表视图事件(Form1.ListView1) 暗黑列表视图自绘制.绑定列表视图事件(Form1.ListView2) AddHandler Form1.UiButton3.Click, AddressOf 界面控制_编码队列.开始任务 AddHandler Form1.UiButton1.Click, AddressOf 界面控制_编码队列.暂停任务 AddHandler Form1.UiButton2.Click, AddressOf 界面控制_编码队列.恢复任务 AddHandler Form1.UiButton5.Click, AddressOf 界面控制_编码队列.停止任务 AddHandler Form1.UiButton6.Click, AddressOf 界面控制_编码队列.移除任务 AddHandler Form1.UiButton16.Click, AddressOf 界面控制_编码队列.重置任务 AddHandler Form1.UiButton9.Click, AddressOf 界面控制_编码队列.定位输出 AddHandler Form1.UiButton8.Click, AddressOf 界面控制_编码队列.重新配置 AddHandler Form1.UiButton重新添加.Click, AddressOf 界面控制_编码队列.重新添加 AddHandler Form1.UiButton7.Click, AddressOf 界面控制_编码队列.导出配置 AddHandler Form1.UiButton15.Click, AddressOf 界面控制_编码队列.复制命令行 AddHandler Form1.UiButton14.Click, AddressOf 界面控制_添加文件.加入编码队列 AddHandler Form1.ListView2.DragEnter, AddressOf 界面控制_添加文件.ListView2_DragEnter AddHandler Form1.ListView2.DragDrop, AddressOf 界面控制_添加文件.ListView2_DragDrop AddHandler Form1.UiButton18.Click, AddressOf 界面控制_添加文件.添加文件 AddHandler Form1.UiButton10.Click, AddressOf 界面控制_添加文件.打开文件夹添加全部文件 AddHandler Form1.UiButton11.Click, AddressOf 界面控制_添加文件.批量移除选中项 AddHandler Form1.UiButton12.Click, AddressOf 界面控制_添加文件.移除全部项 AddHandler Form1.UiComboBox21.SelectedIndexChanged, AddressOf 界面控制_添加文件.选择输出目录 '============================================== Form1.是否初始化 = True End Sub Public Shared Sub 界面校准() Dim 选项卡 As TabPage = Form1.UiTabControlMenu1.SelectedTab Select Case True Case 选项卡.IsEqual(Form1.TabPage起始页面) Form1.UiComboBox1.ItemHeight = 30 * Form1.DPI Form1.UiComboBox2.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(Form1.TabPage编码队列) Form1.Label1.Width = Form1.Panel1.Width - Form1.Panel1.Padding.Left - Form1.Label2.Width - Form1.Label3.Width - Form1.Label4.Width - Form1.Label5.Width - Form1.Label6.Width - Form1.Label7.Width - 200 * Form1.DPI Form1.ListView1.Columns(0).Width = Form1.Label1.Width - 5 * Form1.DPI Form1.ListView1.Columns(1).Width = Form1.Label2.Width Form1.ListView1.Columns(2).Width = Form1.Label3.Width Form1.ListView1.Columns(3).Width = Form1.Label4.Width Form1.ListView1.Columns(4).Width = Form1.Label5.Width Form1.ListView1.Columns(5).Width = Form1.Label6.Width Form1.ListView1.Columns(6).Width = Form1.Label7.Width Form1.ListView1.Columns(7).Width = Form1.Label8.Width - SystemInformation.VerticalScrollBarWidth * Form1.DPI * 2 Dim s1 As Integer = 0 For Each c As Control In Form1.Panel2.Controls s1 += c.Width Next Form1.Panel2.Padding = New Padding((Form1.Panel2.Width - s1) * 0.5, Form1.Panel2.Padding.Top, (Form1.Panel2.Width - s1) * 0.5, 0) Case 选项卡.IsEqual(Form1.TabPage添加文件) Form1.ListView2.Columns(0).Width = Form1.ListView2.Width - SystemInformation.VerticalScrollBarWidth * Form1.DPI * 2 Form1.UiComboBox输出容器.ItemHeight = 30 * Form1.DPI Form1.UiComboBox21.ItemHeight = 30 * Form1.DPI Case 选项卡.IsEqual(Form1.TabPage转码压制) Form1.常规流程参数页面.界面校准() Case 选项卡.IsEqual(Form1.TabPage媒体信息) Form1.RichTextBox1.Size = New Size(Form1.RichTextBox1.Parent.Width, Form1.RichTextBox1.Parent.Height - Form1.RichTextBox1.Parent.Padding.Top * 2) End Select End Sub End Class ``` ## /IMG/e1.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e1.png ## /IMG/e_av1_nvenc.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_av1_nvenc.png ## /IMG/e_h264_nvenc.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_h264_nvenc.png ## /IMG/e_h264_qsv.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_h264_qsv.png ## /IMG/e_hevc_nvenc.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_hevc_nvenc.png ## /IMG/e_hevc_qsv.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_hevc_qsv.png ## /IMG/e_svtav1.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_svtav1.png ## /IMG/e_x264.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_x264.png ## /IMG/e_x265.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/e_x265.png ## /IMG/mi.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/mi.png ## /IMG/sc.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/sc.png ## /IMG/vp.png Binary file available at https://raw.githubusercontent.com/Lake1059/FFmpegFreeUI/refs/heads/main/IMG/vp.png ## /æÂ°æÂÂä¸Âå®ÂçÂÂè¿Â个/1.å¦ÂæÂÂä½ çÂÂéÂÂæ±ÂæÂ¯ä½¿ç¨è¿Â个软件 ```å¦ÂæÂÂä½ çÂÂéÂÂæ±ÂæÂ¯ä½¿ç¨è¿Â个软件 path="/æÂ°æÂÂä¸Âå®ÂçÂÂè¿Â个/1.å¦ÂæÂÂä½ çÂÂéÂÂæ±ÂæÂ¯ä½¿ç¨è¿Â个软件" ``` ## /æÂ°æÂÂä¸Âå®ÂçÂÂè¿Â个/2.èÂÂä¸ÂæÂ¯è¦Âå·¥ç¨ÂæÂÂä»¶ ```èÂÂä¸ÂæÂ¯è¦Âå·¥ç¨ÂæÂÂä»¶ path="/æÂ°æÂÂä¸Âå®ÂçÂÂè¿Â个/2.èÂÂä¸ÂæÂ¯è¦Âå·¥ç¨ÂæÂÂä»¶" ``` The content has been capped at 50000 tokens. The user could consider applying other filters to refine the result. The better and more specific the context, the better the LLM can follow instructions. If the context seems verbose, the user can refine the filter using uithub. Thank you for using https://uithub.com - Perfect LLM context for any GitHub repo.