界面开发之Flat3DButton

现代界面构建:Flat-UI前端开发实战指南 本文还有配套的精品资源,点击获取 简介:Flat-UI是一个现代化的前端设计框架,对Bootstrap进行了扁平化改造,提供易于使用的界面元素,如扁平化设计、大胆色彩和清晰图标。本文将介绍Flat-UI的设计特点和如何通过使用其源码包和CSS/JavaScript文件,以及如何进行扩展和定制,以便快速实现专业级别的前端设计。 1. Flat-UI框架介绍 F... 阅读详情
自己是否想过重画控件,现在用强大的VB来实现吧。

下例就是简单的利用VB中的CommandButton改变成Flat3DButton风格。其实就是利用VB的SubClass去处理父窗口的WM_DRAWITEM消息。

1. 建立一个标准EXE工程,加入Command1和Command2,将Command1的Style属性设为Graphical。

2. 加入模块,取名SubClass_Flat3DButton,贴进代码:

Option Explicit

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Copyright 2002 40Star, All Rights Reserved.
'
'E-Mail      :40Star@163.com
'Distribution:你可以完全自由随便的使用这段代码,不管你用于任何目的
'              程序在于交流和学习
'              如有任何BUG请和我联系
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Declare Function GetParent Lib "user32" _
    (ByVal hWnd As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias _
    "GetWindowLongA" (ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias _
        "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex _
        As Long, ByVal dwNewLong As Long) As Long
       
Private Declare Function CallWindowProc Lib "user32" Alias _
        "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal _
        hWnd As Long, ByVal Msg As Long, ByVal wParam As _
        Long, ByVal lParam As Long) As Long
       
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (Destination As Any, Source As Any, ByVal Length As Long)
   
Const GWL_WNDPROC = (-4&)

Dim PrevWndProc&

Private Const WM_DESTROY = &H2
Private Const WM_DRAWITEM = &H2B

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type DRAWITEMSTRUCT
    CtlType As Long
    CtlID As Long
    itemID As Long
    itemAction As Long
    itemState As Long
    hwndItem As Long
    hdc As Long
    rcItem As RECT
    itemData As Long
End Type

' Owner draw constants
Private Const ODT_BUTTON = 4
' Owner draw actions
Private Const ODA_DRAWENTIRE = &H1
Private Const ODA_SELECT = &H2
Private Const ODA_FOCUS = &H4
' Owner draw state
Private Const ODS_SELECTED = &H1
Private Const ODS_GRAYED = &H2
Private Const ODS_DISABLED = &H4
Private Const ODS_CHECKED = &H8
Private Const ODS_FOCUS = &H10

Private Declare Function GetWindowText Lib "user32" Alias _
    "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, _
    ByVal cch As Long) As Long

'Various GDI painting-related functions
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long

Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
' Color Types
Const CTLCOLOR_MSGBOX = 0
Const CTLCOLOR_EDIT = 1
Const CTLCOLOR_LISTBOX = 2
Const CTLCOLOR_BTN = 3
Const CTLCOLOR_DLG = 4
Const CTLCOLOR_SCROLLBAR = 5
Const CTLCOLOR_STATIC = 6
Const CTLCOLOR_MAX = 8   '  three bits max

Const COLOR_SCROLLBAR = 0
Const COLOR_BACKGROUND = 1
Const COLOR_ACTIVECAPTION = 2
Const COLOR_INACTIVECAPTION = 3
Const COLOR_MENU = 4
Const COLOR_WINDOW = 5
Const COLOR_WINDOWFRAME = 6
Const COLOR_MENUTEXT = 7
Const COLOR_WINDOWTEXT = 8
Const COLOR_CAPTIONTEXT = 9
Const COLOR_ACTIVEBORDER = 10
Const COLOR_INACTIVEBORDER = 11
Const COLOR_APPWORKSPACE = 12
Const COLOR_HIGHLIGHT = 13
Const COLOR_HIGHLIGHTTEXT = 14
Const COLOR_BTNFACE = 15
Const COLOR_BTNSHADOW = 16
Const COLOR_GRAYTEXT = 17
Const COLOR_BTNTEXT = 18
Const COLOR_INACTIVECAPTIONTEXT = 19
Const COLOR_BTNHIGHLIGHT = 20

Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long

Private Declare Function FrameRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long

Private Declare Function RoundRect Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

'pen Api
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
'  Pen Styles
Const PS_SOLID = 0
Const PS_DASH = 1                    '  -------
Const PS_DOT = 2                     '  .......
Const PS_DASHDOT = 3                 '  _._._._
Const PS_DASHDOTDOT = 4              '  _.._.._
Const PS_NULL = 5
Const PS_INSIDEFRAME = 6
Const PS_USERSTYLE = 7
Const PS_ALTERNATE = 8
Const PS_STYLE_MASK = &HF

Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long

Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Private Type POINTAPI
        x As Long
        y As Long
End Type

Private Declare Function DrawText Lib "user32" Alias "DrawTextA" _
    (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, _
    lpRect As RECT, ByVal wFormat As Long) As Long

Private Const DT_SINGLELINE = &H20
Private Const DT_CENTER = &H1
Private Const DT_VCENTER = &H4

Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, _
    ByVal crColor As Long) As Long
   
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, _
    ByVal nBkMode As Long) As Long
   
Private Const TRANSPARENT = 1


Private Sub DrawButton(ByVal hWnd As Long, ByVal hdc As Long, _
rct As RECT, ByVal nState As Long)

   Dim P As POINTAPI
   Dim s As String
   Dim hbr As Long
   Dim hpen As Long
   
   hbr = CreateSolidBrush(GetSysColor(COLOR_BTNFACE))
   SelectObject hdc, hbr
   FillRect hdc, rct, hbr
   DeleteObject hbr
  
   '画文字时背景为透明状
   SetBkMode hdc, TRANSPARENT
   '得到Button的Caption
   s = String$(255, 0)
   GetWindowText hWnd, s, 255
   s = Left$(s, InStr(s, Chr$(0)) - 1)
   '根据Button的Enabled状态进行重画
   If (nState And ODS_DISABLED) = ODS_DISABLED Then
      '画内侧3D效果->亮色
      hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNHIGHLIGHT))
      SelectObject hdc, hpen
      MoveToEx hdc, rct.Left, rct.Top, P
      LineTo hdc, rct.Right, rct.Top
      MoveToEx hdc, rct.Left, rct.Top, P
      LineTo hdc, rct.Left, rct.Bottom
      DeleteObject hpen
      '画内侧3D效果->暗色
      hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW))
      SelectObject hdc, hpen
      MoveToEx hdc, rct.Left, rct.Bottom - 1, P
      LineTo hdc, rct.Right, rct.Bottom - 1
      MoveToEx hdc, rct.Right - 1, rct.Top, P
      LineTo hdc, rct.Right - 1, rct.Bottom
      DeleteObject hpen
      '画阴影文字
      rct.Left = rct.Left + 1
      rct.Right = rct.Right + 1
      rct.Bottom = rct.Bottom + 1
      rct.Top = rct.Top + 1
      SetTextColor hdc, GetSysColor(COLOR_BTNHIGHLIGHT)
      DrawText hdc, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE Or DT_VCENTER
      rct.Left = rct.Left - 1
      rct.Right = rct.Right - 1
      rct.Bottom = rct.Bottom - 1
      rct.Top = rct.Top - 1
      SetTextColor hdc, GetSysColor(COLOR_GRAYTEXT)
      DrawText hdc, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE Or DT_VCENTER
      Exit Sub
   End If
   '按下Button时重画
   If (nState And ODS_SELECTED) = ODS_SELECTED Then
      '画外围黑框
      hbr = CreateSolidBrush(GetSysColor(COLOR_BTNTEXT))
      SelectObject hdc, hbr
      FrameRect hdc, rct, hbr
      DeleteObject hbr
      hbr = CreateSolidBrush(GetSysColor(COLOR_BTNSHADOW))
      SelectObject hdc, hbr
      rct.Left = rct.Left + 1
      rct.Right = rct.Right - 1
      rct.Bottom = rct.Bottom - 1
      rct.Top = rct.Top + 1
      FrameRect hdc, rct, hbr
      DeleteObject hbr
     
      rct.Left = rct.Left + 1
      rct.Right = rct.Right + 1
      rct.Bottom = rct.Bottom + 1
      rct.Top = rct.Top + 1
      SetTextColor hdc, GetSysColor(COLOR_BTNTEXT)
      DrawText hdc, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE Or DT_VCENTER
      Exit Sub
   End If
   'Button得到焦点时重画
   If (nState And ODS_FOCUS) = ODS_FOCUS Then
      '画外围黑框
      hbr = CreateSolidBrush(GetSysColor(COLOR_BTNTEXT))
      SelectObject hdc, hbr
      FrameRect hdc, rct, hbr
      DeleteObject hbr
      '画内侧3D效果->亮色
      hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNHIGHLIGHT))
      SelectObject hdc, hpen
      MoveToEx hdc, rct.Left + 1, rct.Top + 1, P
      LineTo hdc, rct.Right - 1, rct.Top + 1
      MoveToEx hdc, rct.Left + 1, rct.Top + 1, P
      LineTo hdc, rct.Left + 1, rct.Bottom - 1
      DeleteObject hpen
      '画内侧3D效果->暗色
      hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW))
      SelectObject hdc, hpen
      MoveToEx hdc, rct.Left + 1, rct.Bottom - 2, P
      LineTo hdc, rct.Right - 1, rct.Bottom - 2
      MoveToEx hdc, rct.Right - 2, rct.Top + 1, P
      LineTo hdc, rct.Right - 2, rct.Bottom - 1
      DeleteObject hpen
     
      SetTextColor hdc, GetSysColor(COLOR_BTNTEXT)
      DrawText hdc, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE Or DT_VCENTER
   Else
      '画内侧3D效果->亮色
      hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNHIGHLIGHT))
      SelectObject hdc, hpen
      MoveToEx hdc, rct.Left, rct.Top, P
      LineTo hdc, rct.Right, rct.Top
      MoveToEx hdc, rct.Left, rct.Top, P
      LineTo hdc, rct.Left, rct.Bottom
      DeleteObject hpen
      '画内侧3D效果->暗色
      hpen = CreatePen(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW))
      SelectObject hdc, hpen
      MoveToEx hdc, rct.Left, rct.Bottom - 1, P
      LineTo hdc, rct.Right, rct.Bottom - 1
      MoveToEx hdc, rct.Right - 1, rct.Top, P
      LineTo hdc, rct.Right - 1, rct.Bottom
      DeleteObject hpen
      '画阴影文字
      SetTextColor hdc, GetSysColor(COLOR_BTNTEXT)
      DrawText hdc, s, Len(s), rct, DT_CENTER Or DT_SINGLELINE Or DT_VCENTER
   End If
End Sub

Private Function SubWndProc(ByVal hWnd As Long, ByVal Msg As Long, _
                            ByVal wParam As Long, ByVal lParam As Long) _
                            As Long
   Dim di As DRAWITEMSTRUCT
   If Msg = WM_DESTROY Then Terminate (hWnd)
   '处理自画消息
   If Msg = WM_DRAWITEM Then
      CopyMemory di, ByVal lParam, Len(di)
      '判断是自画Button
      If di.CtlType = ODT_BUTTON Then
        
         DrawButton di.hwndItem, di.hdc, di.rcItem, di.itemState
         '不返回VB的默认Button绘制过程
         SubWndProc = 1
         Exit Function
      End If
     
   End If
   SubWndProc = CallWindowProc(PrevWndProc, hWnd, Msg, wParam, lParam)
End Function

Public Sub Init(hWnd As Long)
  PrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubWndProc)
End Sub

Public Sub Terminate(hWnd As Long)
  Call SetWindowLong(hWnd, GWL_WNDPROC, PrevWndProc)
End Sub
' -- 模块结束 -- '

3. Form1中的代码:

Option Explicit

Private Sub Form_Load()
Call Init(Me.hWnd)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call Terminate(Me.hWnd)
End Sub

4. 结束语

怎么样,看到两个Button之间的不同了么

本程序在Win2000 + Vb6中调试通过

彩色扁平化的VB控件库wooSkin.ocx WooSkin.ocx是彩色的、扁平风格的基本控件库。 首个版本包含文本框、按钮。 利用此控件,可以在VB6.0中轻松设计出扁平化风格的,色彩艳丽的,线条优美的软件界面。 在VB中的使用方法: 打开VB编程器,新建一个exe工程,或者打开已有的工程。 然后右键点击左侧控件区下方的空白处,弹出菜单选择“部件”,然后点击“浏览”找到WooSkin.ocx文件,勾选,确定,左侧的控件区就会出现新的控件了。 通过调整控件的属性,可以变换背景色、边框色、边框大小、字体大小和颜色等等。 立即下载

相关推荐

VB界面美化BSkin界面开发控件V2.0

BSkin界面开发控件V2.0 专门为 Visual Basc 6 开发的 UI 控件 新增多个控件的 Demo 演示(基础、拓展、网络、图像等)

VB.NET小程序实现3D摇奖

如图1:     如图2:        界面布局:放置3个标签,一个按钮。    功能操作:点击开始按钮,进行摇号,再次点击后,停止,显示出号码;    实现的代码: Dim IsFlag As Boolean = False '控制开始变量 ''' ''' 开始按钮 ''' ''' ''' ''' Pri

奋斗的蜗牛 3659

VB的扁平化无边框界面示例--记事本

一个简单的扁平化无边框程序实例,提供最小化和关闭按钮的效果以及配色方案,和无边框程序调整大小,控件按比例缩放问题的解决实例。

Qt Quick - ComboBox

ComboBox是一个组合按钮和弹出列表。它提供了一种以占用最小屏幕空间的方式向用户显示选项列表的方法。ComboBox用数据模型填充。数据模型通常是JavaScript数组、ListModel或整数,但也支持其他类型的数据模型。ComboBox {

洪源兄 627

vb6扁平化快速美化类模块FEUI

一句代码即可美化窗体,在初始化代码中传入主窗体对象和一些参数,如控制按钮,窗体透明度,开关窗口的渐隐。用控件的时候也要把样式设置为Flat,这样使用此类模块和vb自带的控件相配合也可以做出不错的窗体效果。

VB6的Win8扁平风格界面

VB6的Win8扁平风格界面,非常漂亮,推荐

Button简介

Button是如何工作的 Button的类型 普通按钮 粘性按钮 单选按钮及复选框 普通按钮的使用 使用复选框 标准复选框 图标复选框 单选按钮 标准单选按钮 图标单选按钮 Button是一个用户界面对象,在单击时向目标发送操作消息。 本文介绍Cocoa提供的各种按钮的不同之处以及如何使用它们。 Button是如何工作的 Button遵循target-ac...

JarlenJohn 5722

Unity面试题总结

Unity面试题

sinat_34014668的博客 1万+

立体感按钮

<Style TargetType="ToggleButton"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ToggleButton"> <Border BorderBrush="#EFEFEF" BorderThickness="...

savagelin的专栏 556

Halcon: 获取仿射矩形-rectangle2的四个顶点、四条边的中点

Halcon 工业应用实用教程中的一个例子: * CenterY : 仿射矩形中心y * CenterX: 仿射矩形中心x * Phi: 仿射矩形角度 * Len1: 仿射矩形宽的一半 * Len2: 仿射矩形高的一半 * CornerY: 仿射矩形端点y * CornerX: 仿射矩形端点x * LineCenterY: 仿射矩形边中点y * LineCenterx: 仿射矩形边中点x * 矩...

ruotianxia的博客 8572

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 286

界面开发之Flat3DButton (转)

界面开发之Flat3DButton (转)[@more@]自己是否想过重画控件,现在用强大的VB来实现吧。 下例就是简单的利用VB中的Commandbutton改变成Flat3DButton风格。其实就是利用VB的SubCla...

csd3176的博客 121

【YOLOv8科研级创新】集成HS-FPN特征融合网络,让Neck模块在参数量锐减100W的同时精度跃升

打开确保模型解析器能识别HS_FPN模块。通过将HS-FPN集成到YOLOv8中,我们实现了一个“轻量级多尺度特征融合+精准检测”的目标检测模型。这个改进不仅在工程上能提升多尺度、细粒度场景的检测效果并降低部署成本,更在科研上提供了“选择性轻量级特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的Neck模块改进中,帮你在论文中打造独特的研究点。

m0_64661770的博客 138

win32 创建带图片的button

void ClientConnection::CreateButtons() { int nr_buttons = 14; TBADDBITMAP tbab; TBBUTTON tbButtons []= { {0,ID_BUTTON_CAD,TBSTATE_ENABLED,TBSTYLE_BUTTON,0L,0}, {1,ID_BUTTON_FULLSCREEN,TBSTATE...

weixin_34150224的博客 491

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 935

数据中台:大数据平台,数据仓库(DM),数据中台之间的联系以及异同分析

大数据平台是一个技术平台。这个技术平台提供了对于大数据的分布式采集,存储,流处理和计算,实时分析等能力。在没有大数据平台前也有数据集成和管理的平台,这种平台可以实现对结构化数据本身的采集,集成和管理。 管理平台,是在原生的大数据生态的基础之上,为了更好的管理集群服务,管理集群的资源,提供灵活SRE能力和资源核算审计能力的一系列工具和合称整体架构数据中台包括数据仓库的全部内容,数据仓库为数据中台提供了数据对外提供服务的基础资源,数据中台将数据仓库建设的投入价值进行最大化,以加快数据赋能业务的速度大家都知道数据

GIS摆渡人 2132

OS X开发.第一章,1.5,NSButton

1.5 NSButton NSButton是Cocoa中用来作为点击响应的控件。常见的可分为文本类型按钮与图片类型的按钮 1.5.1 基本声明 var plainButton: NSButton! override func loadView() { self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300)) } private func initView()

kicinio的博客 640

帆软报表开发-快速入门

数据可视化展示功能特点如下:选择权限管理 > 用户最终权限 > 汤姆(Tom) > 选择图表设计入门 > 打开查看权限。

郭宝的博客 5972

探索未来编程:Flat - 简单、高效的编程语言

探索未来编程:Flat - 简单、高效的编程语言 是一个新颖且引人入胜的开源编程语言,旨在提供更简洁、可读性强和易于学习的编码体验。该项目由 MistLang 团队开发,它的设计哲学是“代码即数据”,这使得 Flat 不仅适用于初学者,也吸引着经验丰富的开发者。 技术概览 Flat 的核心特点是其独特的语法结构。它采用一种类似于 JSON 的扁平化格式,将程序表示为键值对的数据结构。这种结构减少了...

gitblog_00032的博客 722

AMS TMF8820/21/28 SPAD 掩码和模式选择

为了实现最快的测距周期,将报告周期设置在测距周期以下的毫秒,以确保不会有等待时间。除了8X8固定了pixel的位置意外,其他模式客户可以设计自己的spad掩码,并将spad单独分配给通道。对于这些spad掩码,有一些约束。左下角提示红色代表光学中心,绿色方框表示单个spad,每个MP里可能有2X3个spad,也有2X5个spad,也有3X6+3个spad,这部分适配光学,最大的程度的利用spad区域。以下是几种预定义的spad掩码,非常灵活的配置,来适配各种3X3,4X4,8X8的模式选择。

dream it possible 701

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

前端百题——竟然有五种方式实现flat方法

1 背景 不知道老铁们有没有遇到过一道面试题:如何将一个多维数组展开成一个一维数组?当时我遇到的时候还不了解flat这个神奇的方法,用了最传统的解决方法进行解决。 const flatten = arr => arr.toString().split(’,’).map(item => +item); const arr = [1, 2, [3, 4, [5, 6]]]; console.log(flatten(arr)); // [ 1, 2, 3, 4, 5, 6 ] 复制代码 上述方法是不是

开源世界 1416

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Flat 开源项目贡献指南:从入门到实践

Flat 是一款优秀的实时协作白板解决方案,其开源特性为开发者提供了参与项目改进的绝佳机会。本文将系统性地介绍如何为 Flat 项目做出高质量的技术贡献,帮助开发者快速上手并避免常见误区。 ## 贡献类型详解 ### 1. 文档优化 文档是项目的重要组成部分,优秀的文档能显著降低用户的学习成本。你可以从以下方面着手: - 修正技术文档中的错别字和语法错误 - 补充不完整的API说明 - 增...

gitblog_00119的博客 540

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: vb的GUID生成算法
IceMe
博客等级 码龄23年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值