Visual Basic.NET和GDI+共创图标编辑器

Jade 9.0安装全指南:Win7系统下XRD物相分析软件部署实战 X射线衍射(XRD)数据分析是材料科学、地质矿产和金属冶金等领域的基础技术环节,其核心在于物相识别与晶格参数解析。Jade 9.0作为经典VB6架构的本地化XRD处理工具,依托PDF卡片库与FindIt检索引擎,提供稳定、离线、低门槛的物相匹配能力。其技术价值体现在无需联网授权、兼容老旧硬件、算法成熟可复现,特别适合高校教学、质检实验室及毕业设计等轻量级科研场景。尽管受限于Windows旧式运行时(如msvbvm60.dll)和路径编码规范,但在Win7系统下通过DLL补丁、路径标准化与数据库索引配置,仍可 阅读详情
  如果想自己设计一个个性独特的ico图片,然后让它成为如"我的电脑","回收站"这样的图标该怎么做?就只有用一些专门的画图工具。因为windows的的画图程序无法创建ico文件。于是本人利用.net和GDI+就编写了一个这样的画图工具。虽然现在有很多文章都介绍了GDI+技术,但都只是纯粹的GDI+的简单应用的介绍,至少我还没有看见一篇利用GDI+开发一个完整软件或程序片段的文章。

  这个程序实现了以下的功能:将BMP、JPG、jpeg、GIF、.png、.tiff文件转化成ico文件,可以对转化后的文件进行编辑;创建并编辑一个新的ico文件;对已有的ico文件进行编辑。所有被编辑的文件都保存为ico文件,可以在任何可使用ico文件的地方使用它们。

  我先说明一下什么是GDI+。GDI+ 是GDI(Windows 早期版本提供的图形设备接口)的后续版本,是Microsoft Windows XP操作系统即后续版本的图形显示技术。它已经集成到了.net开发环境中,所以不管你的OS是什么版本,只要安装了.NET框架,就有了GDI+(注意:是.net框架,而不是.net开发环境,所以win98中也可以使用GDI+)。当然它也提供了传统的api,可以由.net或非.net开发工具调用它。由于他和GDI的使用有很大的差别,所以要使用GDI+就必须从头学。GDI+要比GDI简单得多。

  现在就来看一下如何实现这个软件:先添加picturebox,0penfiledialog,savefiledialog,colordialog,domainupdown,label控件;然后添加两个菜单即它们的子菜单,添加的菜单如下"文件"菜单包括"新建","打开","保存","退出","功能"菜单包括"直线","选择颜色"代码如下,在代码后给出程序说明:

Public Class Form1
Inherits System.Windows.Forms.Form
Public imagepen, newbit, changiamge, mpen 'movepen,moveb,,grh,filenames,endpen
Dim xd, yd, xu, yu, pk, ps

Private Sub MenuItem9_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) 'Handles MenuItem9.Click
'新建一个ico文件,即"新建"菜单

 PictureBox1.Image = Nothing
 Dim bitnew As New System.Drawing.Bitmap(32, 32,
 Drawing.Imaging.PixelFormat.Format32bppArgb)'建立一个Bitmap对象,以便在它上面画图
 Dim x, y
 For x = 0 To 31
  For y = 0 To 31
   bitnew.SetPixel(x, y, Color.Transparent)'将Bitmap的背景设置为透明
  Next
 Next

 newbit = bitnew
 MenuItem3.Enabled = False'"选择颜色"菜单不可用
 MenuItem2.Enabled = True'"直线"菜单可用
End Sub

Private Sub MenuItem6_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)' Handles MenuItem6.Click
'打开图片文件即"打开"菜单"

 OpenFileDialog1.Filter = "ico文件(*.ico)|*.ico|图像文件
(*.BMP;*.JPG;*.jpeg;*.GIF;*.png;*.tiff)|*.BMP;*.JPG;*.jpeg;*.GIF;*.png;*.tiff"

 OpenFileDialog1.FilterIndex = 2
 OpenFileDialog1.ShowDialog()
 OpenFileDialog1.FileName = ""

End Sub

Private Sub MenuItem8_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) 'Handles MenuItem8.Click

 Me.Close()'退出

End Sub

Private Sub MenuItem7_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)

 'Handles MenuItem7.Click
 '保存文件,即"保存"对话筐

 PictureBox1.Cursor = System.Windows.Forms.Cursors.Default
 SaveFileDialog1.Filter = "ico文件(*.ico)|*.ico"'设置要保存的文件后缀
 SaveFileDialog1.ShowDialog()
 If SaveFileDialog1.FileName <> "" Then
  If Not SaveFileDialog1.ShowDialog.Cancel Then
   Dim bmp As New System.Drawing.Bitmap(PictureBox1.Image,
32,32)'从PictureBox1.Image初始化Bitmap,设置保存为图片的大小,标准ico图由
32*32和16*16两种格式组成,此处为32*32,你也可以设置为16*16

   Dim ico As System.Drawing.Icon = ico.FromHandle(bmp.GetHicon())
   '用Bitmap的句柄,初始化icon,他是专门处理ico文件的类
   Dim file As New System.IO.FileStream(SaveFileDialog1.FileName(),
   IO.FileMode.Create)'创建文件流
   ico.Save(file)'保存为ico文件
   file.Close()'关闭流
  End If
 End If
End Sub

Public Sub MenuItem2_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)

 'Handles MenuItem2.Click
 '是用直线在新建的ico中画图

 PictureBox1.Cursor =System.Windows.Forms.Cursors.Cross
 '在PictureBox1中鼠标的样式

 ColorDialog1.ShowDialog()
 Dim pen As New Pen(ColorDialog1.Color, DomainUpDown1.Text())'创建画笔
 imagepen = pen

End Sub

Private Sub PictureBox1_MouseDown(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.MouseEventArgs)

 'Handles PictureBox1.MouseDown
 '当按下鼠标左键时获取直线的起点

 If e.Button = MouseButtons.Left Then
  xd = e.X / 8 : yd = e.Y / 8
 End If

End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.MouseEventArgs)

 'Handles PictureBox1.MouseUp
 '画出直线
 If PictureBox1.Cursor Is System.Windows.Forms.Cursors.Cross And ps <> 1 Then
  xu = e.X : yu = e.Y
  Me.k(1, imagepen, yu / 8, xu / 8, xd, yd)
 Else
  If OpenFileDialog1.FilterIndex = 1 Then
   xu = e.X : yu = e.Y
   Me.k(2, mpen, yu / 8, xu / 8, xd, yd)
  End If
 End If
End Sub

Public Sub k(ByVal k As Integer, ByVal drawtool As Object,
ByVal x As Integer, ByVal y As Integer, ByVal xs As Integer,
ByVal ys As Integer)

 If k = 1 Then
  PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage'自动容纳图片
  PictureBox1.Image = newbit
  Dim Graphic As Graphics
  Graphic = Graphic.FromImage(Me.PictureBox1.Image)'在PictureBox1上画图
  Graphic.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias'锯齿削边
  Graphic.DrawLine(drawtool, y, x, xs, ys)'画线
 End If
  If k = 2 Then
   PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
   PictureBox1.Image = changiamge
   Dim Graphic As Graphics
   Graphic = Graphic.FromImage(Me.PictureBox1.Image)
   Graphic.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias
   Graphic.DrawLine(drawtool, y, x, xs, ys)
  End If
End Sub

Private Sub MenuItem3_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)

 'Handles MenuItem3.Click
 '对打开的ico文件用直线画图

 ColorDialog1.ShowDialog()
 Dim m3pen As New Pen(ColorDialog1.Color, DomainUpDown1.Text())'建立画笔
 mpen = m3pen

End Sub

Private Sub OpenFileDialog1_FileOk(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs)

 'Handles OpenFileDialog1.FileOk
 '打开文件

 If OpenFileDialog1.FilterIndex = 1 Then
  Dim m3pen As New Pen(Color.Black, DomainUpDown1.Text())
  mpen = m3pen
  MenuItem2.Enabled = False
  MenuItem3.Enabled = True
 Else
  MenuItem3.Enabled = False
  MenuItem2.Enabled = False
 End If

 If OpenFileDialog1.FileName <> "" Then
  PictureBox1.Cursor = System.Windows.Forms.Cursors.Default
  Dim images As New System.Drawing.Bitmap(OpenFileDialog1.FileName)
  changiamge = images
  PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
  PictureBox1.Image = images
  Me.Text = OpenFileDialog1.FileName
 End If

End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)

  'Handles MyBase.Load
  '由于刚运行次程序时,没有打开的ico文件和新建立的ico对象所以不可以创建画图工具对象

  MenuItem3.Enabled = False
  MenuItem2.Enabled = False

End Sub
End Class

   程序说明:

  1. 如何新建ico文件:先初始化bitmap,然后在"功能"-》"直线"菜单代码中创建画笔,就可以开始画了。此时只是创建的一个bitmap对象,是我们在picturebox中画。画完后将bitmap对象保存到文件,就完成了新建ico的文件。

  2.如何打开已有的ico文件,并修改后保存它:判断打开的文件是否是ico,如果不是就只显示他,如果是就显示并且初始化一个画笔,通过"功能"-》"选择颜色"来改变画出直线的颜色和宽度,然后保存,就完成了对原来ico文件的修改。

  3.保存文件和对非ico文件转化为ico文件:通过打开文件,将非ico文件显示在picturebox中,在用picturebox.image初始化bitmap对象,此句的实际作用是将当前的picturebox.image内容附给bitmap。用bitmap的句柄初始icon对象(处理ico文件的对象),作用是将非ico文件转化为ico文件,建立文件流对象,在其中指定新文件名,和访问方法(文件流是save方法的参数)使用icon对象的save保存,最后关闭文件流。

  4.如何画:当完成1或2后,就可以开始画图,画图是由sub k过程,mouse-down,mouse-up来实现的。此时调用mouse-down获得直线的起点,在mouse-up中获得直线终点,接着在mouse-up 中调用sub k过中程绑定bitmap对象到picturebox的image属性,他的作用类似于有了一张可以画画的纸,并在sub k中用Graphic.FromImage(Me.PictureBox1.Image)语句创建Graphics对象,表示是在PictureBox1.Image的bitmap对象中画,而不是在PictureBox1上画,他们的区别在于前者是可以保存画画结果的,后者不可以。K的值表示是在新建的ico文件中画还是修改以有的ico文件(k=2是表示修改已有的ico文件)

  5.一些语句说明:dim pen …是指用钢笔来画,object.rawline(….)表示画直线,

  6.文件格式的转换问题:你可以使用image对象的save的方法来转换图象的格式,但是我发现虽然他提供了icon格式,但转化后不是ico文件,而是png文件。从网上的资料显示这是.net的本身问题。顺便提一下image对象无构造函数,他虽然标为必须继承才可使用,但实际上不行,如要使用它要用他的fromfile或fromstream方法来构造它。

  7.关于k的问题:当你看懂这篇文章后你一定会提出为什么在每条分支中的PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage,PictureBox1.Image = changiamge这两句代码不可以与它后面的代码分开放在其他地方,如k=1时放在"新建"菜单中的代码部分,k=2是放在mouseup中的else后的if语句中!其实这两句就是我在编写这个程序时遇到的最大的难题,我用了两个小时才的出这两句代码要放在了现在的位置。最后看资料并与朋友探讨后得出3个结论:

  1. .NET本身问题。

  2.如果分开使PictureBox1.Image对象丢失(PictureBox1.Image返回的是bitmap对象),无法绑定到Graphics。

  3. PictureBox1.Image对象在sub k中不可见。虽然我不知道那个结论是对的,但我将它写了出来,仅供参考。

  对于程序中的0penfiledialog,savefiledialog,colordialog,domainupdown,文件流的使用请见msdn。这5个只是为了辅助这个程序而使用的,如果要在这里讲清楚那这片文章就太长了,而且这些的使用很简单。我在程序中使用的画图工具是钢笔,画出的图形是直线,这队ico文件已经够有了,如果你想使用其他工具,画其他图形,只要修改"功能"中的子菜单,和sub k代码就够了。

  运行如图:



  更换后的"我的电脑"图标



使用VB.Net GDI+编程编写的3D魔方游戏程序 最近学习了.net下的GDI+编程,下面小秀一下成果,使用GDI+编写的桌面魔方程序,今天把源代码放上,欢迎大家下载,如果机器上有.net环境的话可以直接运行bin目录下的MagicCube.exe进行游戏。源代码下载地址de/magiccube/magiccube.zip" >http://www.lidaren.com/code/magiccube/magiccube.zip下面方式几个重要 阅读详情

相关推荐

<.Net><VB>使用vb.net编写的icon图标文件生成程序(图像格式为bmp),可用作windows应用程序的图标

一、icon文件格式的简单介绍 windows的图标文件,其格式为ico。 windows的.net编程,自带Icon函数,可以利用Icon.Save来保存icon文件,其中稍微要注意的就是,icon文件的头文件格式。 Icon.save的参数为流数据即stream,所以,在你保存时,需要先把整个icon文件的流数据写出来,如果格式不对。或者头文件设置错误,生成出来的icon文件,可能会有错误或者bug,比如生成不了,或者即使能够生成,但图片不完整等等。 通常情况下,icon文件里面的图像数据,其格式可以是

用沸腾的热血,支付我们的人生吧! 2533

GDI+编程小结

GDI+编程小结

深之JohnChen的专栏 5万+

Visual Basic.NET GDI+技术教程Visual Basic.NET GDI+技术教程

Visual Basic.NET GDI+技术教程

电脑双系统怎么删除一个_电脑回收站删除的文件怎么恢复?小白也会的恢复操作!...

原标题:电脑回收站删除的文件怎么恢复?小白也会的恢复操作!电脑回收站删除的文件怎么恢复?回收站里的文件被删除了,如何还原删除的文件呢?被Shift+Delete彻底删除的文件如何恢复呢?本文将详细介绍误删除文件恢复方法,清空了回收站也可以轻松恢复文件。 回收站清空了怎么恢复回收站清空了怎么恢复?在操作电脑的时候,我们可能会不小心删除一些重要数据。遇到这个情况,可以打开回收站,找到被误删除的文件,选...

weixin_39600447的博客 214

ARM和FPGA之间的通信(硬件原理图篇)

设计该开发板的初衷是为了学习,但也希望今后能扩展其功能,看到大家都在diy示波器,自己也非常冲动的想DIY一把,于是呼选了arm+fpga的方案,fpga主要用来实现数据的高速采样,而ARM则提供数据的显示,以及一些人机交互的功能。那么该方案中最重要的地方就是ARM和FPGA之间的通信如何实现了。在网上查了很多的资料,有说将FPGA作为ARM的一个外设,可以通过DMA的方式来直接访问;也有说把FP

屌yy的博客 5万+

CentOS7上装不了最新Chrome?别折腾依赖了,试试这个老版本安装法(附103.0.5060.24 beta下载地址)

本文提供了在CentOS7上安装兼容版Chrome的详细指南,解决了因GLIBC版本限制导致的最新版Chrome无法安装的问题。推荐使用Chrome 103.0.5060.24 beta版本,并附有下载地址和完整安装步骤,包括禁用自动更新和配套工具安装,确保系统稳定性和功能完整性。

weixin_29289821的博客 569

ReaLTaiizor:专业级.NET WinForms控件库完整指南

ReaLTaiizor是一款功能强大的.NET WinForms控件库,专为开发者提供现代化、设计精美的用户界面组件。这个开源项目包含了50多种精心设计的控件,支持多种主题风格,让你的应用在视觉上脱颖而出。无论你是刚接触WinForms的新手,还是经验丰富的开发者,ReaLTaiizor都能帮助你快速构建专业级的桌面应用程序界面。 ## 🎯 核心价值与独特优势 ReaLTaiizor控件库的

gitblog_00371的博客 430

034、特定场景优化(一):小目标检测的改进策略合集

本文针对工业场景中的小目标检测难题,提出了一套实战优化方案。首先从数据层面建议保持高分辨率输入(1024-1280像素)或采用切块训练策略,并适当放大标注区域。在网络结构上,提出减少下采样次数、增加高分辨率检测头、引入空间注意力机制等改进。损失函数方面推荐使用NWD匹配和QFL损失提升小目标敏感度。部署环节强调NMS优化、分辨率对齐和量化处理技巧。最后总结核心经验:优先优化数据质量而非模型结构,标注一致性比算法更重要,同时需为实际部署预留性能余量。硬件升级有时比算法调优更经济有效。

xiaoyaohou11的博客 652

GDI+和Visual Basic.NET

使用 GDI+ 和 Visual Basic .NETKen GetzMCW Technologies, LLC 2003年6月 摘要:本文提供了一个简单但极具示范性的示例,说明一个时钟演示程序如何利用 .NET Framework 提供的 GDI+ 功能,同时帮助您提高 Visual Basic .NET 技术水平。(本文包含一些指向英文站点的链接。)下载 GDIPlus.msi

netwarning的专栏 1353

LangChain实战:Plan and Execute代理在智能预算规划中的应用

本文详细介绍了如何利用LangChain框架中的Plan and Execute代理实现智能预算规划。通过拆解复杂财务问题、调用多工具链协作,该代理能自动完成从个人月度预算到家庭年度综合预算的智能规划,并具备消费习惯学习和多目标优化等进阶功能,帮助用户实现精准财务管理和决策优化。

weixin_42530732的博客 382

UCD9081EVM电源时序管理:硬件配置与GUI操作全解析

电源时序管理是复杂电子系统设计的核心环节,它通过精确控制多路电源的上电/下电顺序,确保核心芯片免受浪涌电流或电压倒灌的损害。其原理基于状态机逻辑与电压监控,技术价值在于将硬连线时序转化为可编程配置,极大提升了系统可靠性与设计灵活性。在服务器、通信设备、工控系统等高可靠性应用场景中,时序控制器是实现稳定启动与故障保护的关键。本文以德州仪器UCD9081评估模块为例,深入剖析其硬件跳线配置与图形用户界面操作,涵盖I2C地址设置、电压监控分压计算、时序条件与故障响应策略等工程实践要点,帮助工程师快速掌握这一电源时

weixin_42696271的博客 302

微软技术日报 11-09:.NET 8 与 9 明日同时停止支持,注册表编辑器出了 WinUI 3 版

今天这四条消息的共同点是收口。.NET 8 和 9 的支持期到点,注册表编辑器的新界面只放在仓库里给人看,GitHub 把一类危险触发器按住默认,微软在安全报告里把防线从地址黑名单挪到行为。收口并不等于关门。.NET 10 还在支持期里,被按住的触发器可以用策略按文件放回来,实验室里的样例随时可能变成产品。区别在于这些动作要有人签字,不再是默认开着。如果今天只做一件事,去看一眼构建机上的 .NET 版本。明天之后,8 和 9 的漏洞补丁不会再来了。

海盗Sharp的博客 317

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 661

微软技术周报 11-02~11-09:VS Code 混装 Claude 与 Codex、EF Core 11 静默改行为、.NET 11 倒计时

11 月 6 日,Power Platform 通过消息中心通知管理员,Copilot Studio、Power Automate 和 Power Apps 里所有跑在 Anthropic Claude、xAI Grok 以及旧版 GPT 上的 prompt,12 月 2 日自动迁移到 GPT-6 系列,档位价格不变,模型选择收窄到一条产品线。效果是这样的:让 Claude 评审一个 Copilot chat 写出的方案,或者把同样的任务交给 Codex,两边并排跑在同一个会话里。更要紧的是下周的时间线。

海盗Sharp的博客 812

手把手教你学simulink实例--基于Simulink的船舶动力定位系统建模与仿真

船舶动力定位系统(Dynamic Positioning System, DPS)是一种通过控制推进器来保持船舶在指定位置和航向的技术。它广泛应用于海上钻井平台、海洋调查船、起重船等需要精确位置控制的场景。DPS的核心任务是实时感知环境干扰(如风、浪、流),并通过闭环控制算法调整推进器输出,以抵消外界扰动并维持船舶的位置和姿态。本项目旨在基于MATLAB/Simulink平台,构建船舶动力定位系统的数学模型,并进行仿真分析,验证其性能和稳定性。

MHD0815的博客 1083

Python之abbrobotegm包语法、参数和实际应用案例

`abbrobotegm` 是用于控制 ABB 机器人的 Python 接口包,主要通过 EGM(Externally Guided Motion,外部引导运动)协议与 ABB 机器人控制器进行通信,实现对机器人的实时位置控制、状态监控和运动引导等功能。该包适用于需要将 ABB 机器人与外部系统(如视觉系统、传感器等)集成的场景。

王国平的博客 1254

11-01-演进-.NET GC发展史

.NET GC发展史映射硬件演进:从单核STW到多核并发,再到区域化细粒度回收。历经分代管理、ServerGC、BackgroundGC、LOH自动压缩、POH隔离、DATC自适应线程数及Region-based管理等关键革新,代码量从5000行增至4万+,复杂度指数上升。每一步优化均在暂停时间、吞吐量与资源开销间权衡,体现“实用主义”哲学。核心启示:GC演进由硬件驱动,方向明确——更短暂停、更高效率,但代价是工程复杂性持续攀升。

设计 AI 玩游戏🎮 372

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

.NET 10 的性能提升

你不需要重写代码去用Span<T>,不需要手工池化对象,甚至不需要调整 GC 配置。JIT 编译器变得更“聪明”了,它会在编译时替你完成一些过去需要手动干预的优化。但与此同时,.NET 10 也引入了一个默认开启的 GC 行为变化,它在某些场景下会。这篇文章想讲清楚:哪些性能是你“自动”拿到的,哪些是需要你主动审视和取舍的。

qq_41019429的博客 345

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

在 .NET 10 中使用 Keycloak.Admin.Sdk 管理 Keycloak:从基础接入到功能开关

面向 .NET 10 / Native AOT 的 Keycloak Admin REST API 客户端,当前仅支持 Keycloak 26.8.1。主包引用 Microsoft.Extensions.Http 10.0.14 和 Microsoft.Extensions.Http.Resilience 10.11.0,使用源生成 JSON 元数据,默认关闭反射序列化。仓库固定 .NET SDK 10.0.403。

ChaITSimpleLove的博客 369

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

.NET 性能优化:先找瓶颈,再谈技巧

NET 性能优化没有“一招鲜”。Span<T>ValueTaskstackalloc这些工具在特定场景下确实很强,但它们解决的是微观层面的分配问题。如果你的应用瓶颈在数据库查询或者线程池阻塞,用再多Span<T>也救不回来。先测量,找到热路径,再针对性修改,改完再测量验证。跳过第一步的优化,大概率是在给编译器添乱。

qq_41019429的博客 378

.NET 11 - 尝试一下Blazor中的新特性SupplyParameterFromTempData

时光匆匆,.NET Conf 2026大会将会在2026年11月份举办(11/10-11/13),到时微软将会发布.NET11,这是一个STS版本(Standard Term Support), 微软提供两年支持。当前.NET 11已经处于RC3版本(Release Candidate 3),很多新特性已经被发布出来了。

limingdinghao的博客 228

FFmpeg × C# 实战:从命令行原理到 .NET 工程化落地

本文系统讲解 FFmpeg 的核心概念(容器/编码/流/滤镜/时间基),并给出 C# 对接的五条技术路线对比。重点实现一个可落地的 FFmpegRunner 封装,解决管道死锁、结构化进度解析、取消超时、二进制分发与参数注入五大工程问题;随后覆盖转码、裁剪、合并、抽帧、限体积压缩、水印、硬件加速六大高频场景,并附安全清单与排错速查表。

李赛赛的专栏 607
上一篇: 优秀网站
下一篇: 使用.NET存储XML数据
slightboy
博客等级 码龄23年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值